Как использовать 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 во время компиляции, чтобы сделать сборку более независимой от системы.

  1. Создать совокупную цель
  2. На этапе сборки добавьте скрипт запуска

    #!/bin/bash
    
    OTHER_CPLUSPLUSFLAGS="$(pkg-config gtk+-2.0 --cflags)"
    echo -e "OTHER_CPLUSPLUSFLAGS = \$(inherited) ${OTHER_CPLUSPLUSFLAGS}" > MyApp.xcconfig
    
  3. В Info в вашем проекте установите MyApp.xcconfig в качестве целевого файла конфигурации

  4. В Фазы сборки в целевом приложении добавьте целевую совокупность в качестве зависимости
  5. Исключите 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, а затем включает его в ваш проект. Только не добавляйте это в свой исходный репозиторий.

Другие вопросы по тегам