Как использовать pkg-config для установки путей включения в Xcode?
Например, если мне нужно Gtk+ включить пути. Как пользоваться pkg-config gtk+-2.0 --cflags
в настройках проекта XCode?
5 ответов
Один вариант, но он не очень переносим для других разработчиков проекта - вы можете просто запустить pkg-config gtk+-2.0 --cflags
в вашем терминале и вставьте его в Build Settings -> Other C Flags
, Мне было бы интересно услышать, как другие справляются с этим более портативным способом, хотя. В идеале было бы неплохо запустить pkg-config во время компиляции, чтобы сделать сборку более независимой от системы.
- Создать совокупную цель
На этапе сборки добавьте скрипт запуска
#!/bin/bash OTHER_CPLUSPLUSFLAGS="$(pkg-config gtk+-2.0 --cflags)" echo -e "OTHER_CPLUSPLUSFLAGS = \$(inherited) ${OTHER_CPLUSPLUSFLAGS}" > MyApp.xcconfig
В Info в вашем проекте установите MyApp.xcconfig в качестве целевого файла конфигурации
- В Фазы сборки в целевом приложении добавьте целевую совокупность в качестве зависимости
- Исключите MyApp.xcconfig в вашем контроле версий
Один из недостатков заключается в том, что до тех пор, пока вы не создадите целевую совокупность напрямую или косвенно хотя бы один раз, автозаполнение не будет работать должным образом.
- Используйте make-файл, который использует pkg-config и любые другие инструменты оболочки для сборки библиотеки.
Создайте небольшой файл API без зависимостей для библиотеки, который будет компилироваться в XCode, и включите его и встроенную библиотеку в сборку XCode.
Необязательно: инкапсулируйте сборку make-файла в шаг сборки "Run Script" в XCode.
В дополнение к отличному ответу user407278, если также необходимы флаги компоновщика, используйтеOTHER_LDFLAGS
:
#!/bin/sh
OTHER_CPLUSPLUSFLAGS=$(pkg-config --cflags gtk+-2.0)
OTHER_LDFLAGS=$(pkg-config --libs gtk+-2.0)
echo "OTHER_CPLUSPLUSFLAGS = \$(inherited) ${OTHER_CPLUSPLUSFLAGS}" > MyApp.xcconfig
echo "OTHER_LDFLAGS = \$(inherited) ${OTHER_LDFLAGS}" >> MyApp.xcconfig
Более переносимым было бы написать скрипт, который записывает вывод pkg-config в файл.xcconfig, а затем включает его в ваш проект. Только не добавляйте это в свой исходный репозиторий.