eclipse cdt: добавить путь включения из pkg-config - PullRequest
3 голосов
/ 28 сентября 2010

Я хочу добавить динамический путь конфигурации (сгенерированный из pkg-config) в мой проект.(это в основном для сторонних зависимостей, таких как boost, поэтому включение в рабочее пространство не подходит, а в файловую систему не входит ни то, ни другое, потому что это будет жестко задано, и каждый разработчик должен будет изменить это вручную)

Я в свойствах проекта -> c ++ общие-> пути и символы-> включает в себя вкладку-> добавить ...-> добавить путь к каталогу-> переменные, но я могу выбирать только среди существующих переменных, как мне создать новую переменную, динамически генерируемую из программы командной строки?как pkg-config --cflags boost-1.43?

это легко сделать в netbeans;вы просто добавляете командную строку pkg-config с обратными кавычками в дополнительных опциях сборки, и она разрешает включение сборки, и даже теоретически она должна обновлять индексатор (хотя, если честно, в последний раз корректное обновление индексатора из pkg-config было включено)NetBeans 6,8, он был разбит на 6,9 и 6,9,1)

Я прочитал это сообщение StackOverflow , но я все еще не уверен, как это помогает в этом конкретном случае

Я прочитал где-то , что вы можете использовать $ (shell pkg-config ...) для генерации переменных окружения, но не уверены, где разместить команду

, если нет простого готового решения iВ этом посте я попробую сценарий

кстати, я использую eclipse helios -cdt 7

спасибо!

Ответы [ 4 ]

3 голосов
/ 12 мая 2011

Поддержка Pkg-config наконец приходит к CDT и будет завершена в августе.

http://code.google.com/p/pkg-config-support-for-eclipse-cdt/

3 голосов
/ 30 декабря 2012

вы можете использовать $ (shell pkg-config - cflags your_libs) в:

Project properties->C/C++ Build->Settings->"Tools Settings" tab->**C Compiler**->Miscellaneous->Other Flags

и

вы можете использовать

$(shell pkg-config **--libs** your_libs) 

in

Project properties->C/C++ Build->Settings->"Tools Settings" tab->**C Linker**->Miscellaneous->Other Flags

, если компоновщик не связывается, убедитесь (например, в окне консоли сборки), что флаги pkg-config появляются после объектов для компоновки.Вы можете сделать это в свойствах-> C / C ++ Build-> Settings -> вкладка «Tools Settings» -> C Linker -> Шаблон командной строки, перемещающийся ${FLAGS} в конец:

из этого (например):

${COMMAND} **${FLAGS}** ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} **${INPUTS}**

до этого:

${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} **${INPUTS} ${FLAGS}**
2 голосов
/ 17 декабря 2014

По крайней мере, в eclipse 4.3.2 выглядит так, как будто можно просто добавить

`pkg-config --libs <mylibname>`

в Project-> Properties-> C / C ++ Build-> Settings-> GCC {C | C ++} Linker-> Разное-> Флажки Linker

аналогично

`pkg-config --cflags <mylibname>`

в Project-> Properties-> C / C ++ Build-> Settings-> GCC {C | C ++} Compiler->Разное-> Другие флаги

1 голос
/ 02 октября 2010

На данный момент я обнаружил, что вы можете сделать

project-> properties-> c ++ build-> build variable

добавить новую переменную строкового типа.Называйте его как хотите:

UNITTEST_CPP_CXXFLAGS

, затем укажите его значение: $ (shell pkg-config --cflags unittest-cpp)

свойства перехода к проекту-> C ++ вообще -> путь и символы, включает в себя.Выберите языки c ++, в противном случае по умолчанию используется исходный файл сборки.Нажмите добавить.В пути добавления каталога нажмите переменные ... (потому что мы хотим добавить только что созданную переменную)

введите имя переменной (UNITTEST_CPP_CXXFLAGS), нажмите клавишу ввода и ок

Когда вы перестраиваете результат, команда оболочки заменяется в опции -I (по крайней мере для цепочки инструментов gnu gcc), в общем случае вывод pkg-config может включать один или несколько ключей -I, так что это не будет работать.Перейдем в c ++ build-> settings-> настройки инструмента-> gcc c ++ compiler-> Прочее.Там добавьте $ {UNITTEST_CPP_CXXFLAGS} к другим флагам.

теперь будет добавлено включение, но нет никакой надежды заставить индексатор просматривать эти включения!

...