XCode с pkg-config
Привет, я использую gtkmm в проекте XCode, и мне интересно, как я могу включить заголовки без использования командной строки и добавления их вручную. Есть ли способ использовать pkgconfig в XCode, не делая это таким образом, то есть некоторые дополнительные параметры или что-то?
Любая помощь будет оценена.
2 ответа
Может быть, посмотрите здесь
Ты можешь использовать pkg-config
, если .pc
файл для этого пакета присутствует. Эти файлы обычно расположены в /usr/share/pkgconfig
, Вы также можете подготовить свой собственный файл.pc, написав каталог заголовочных файлов и каталог библиотеки в указанном формате.
Достаточно взглянуть на содержимое файла.pc, и это интуитивно понятно.
Я знаю, что это старый, но я смог заставить работать gtkmm в Xcode 6, поэтому я решил поделиться.
Предполагая, что gtkmm и Xcode 6 установлены на вашем Mac, следующие шаги должны позволить вам добавить gtkmm в существующий проект Xcode (C++).
Бежать pkg-config <pkgconfig file name> —cflags —libs
в терминале. Эта команда возвращает флаги компоновщика / флаги компилятора, которые понадобятся Xcode. У меня установлен gtkmm 2.24.2_1 на моей машине, поэтому для меня команда pkg-config gtkmm-2.4 —cflags —libs
для меня. Я не могу гарантировать, что это работает для других версий.
Чтобы определить имя вашего файла.pc, мой был расположен внутри /usr/local/Cellar/gtkmm/2.24.4_1/lib/pkgconfig
Команда терминала должна вернуть все необходимые флаги, вот что возвращает мой:
-D_REENTRANT -I / usr / local / Cellar / gtkmm / 2.24.4_1 / include / gtkmm-2.4 -I / usr / local / Cellar / gtkmm / 2.24.4_1 / lib / gtkmm-2.4 / include -I / usr / local /Cellar/atkmm/2.22.7/include/atkmm-1.6 -I / usr / local / Cellar / gtk + / 2.24.28_2 / include / gtk-unix-print-2.0 -I / usr / local / Cellar / gtk + / 2.24.28_2 / include / gtk-2.0 -I / usr / local / Cellar / gtkmm / 2.24.4_1 / include / gdkmm-2.4 -I / usr / local / Cellar / gtkmm / 2.24.4_1 / lib / gdkmm-2.4 / include -I / usr / local / Cellar / glibmm / 2.44.0 / include / giomm-2.4 -I / usr / local / Cellar / glibmm / 2.44.0 / lib / giomm-2.4 / include -I / usr / local / Cellar /pangomm/2.36.0/include/pangomm-1.4 -I / usr / local / Cellar / pangomm / 2.36.0 / lib / pangomm-1.4 / include -I / usr / local / Cellar / glibmm / 2.44.0 / include /glibmm-2.4 -I / usr / local / Cellar / glibmm / 2.44.0 / lib / glibmm-2.4 / include -I / usr / local / Cellar / cairomm / 1.11.2_1 / include / cairomm-1.0 -I / usr /local/Cellar/cairomm/1.11.2_1/lib/cairomm-1.0/include -I / usr / local / Cellar / libsigC++/2.4.1/include/sigC++-2.0 -I/usr/local/Cellar/libsigC++/2.4.1/lib/sigC++-2.0/include -I/usr/local/Cellar/gtk+/2.24.28_2/include/gtk-2.0 -I/usr/local/Cellar/gtk+/2.24.28_2/lib/gtk-2.0/include -I/usr/local/Cellar/pango/1.36.8_1/include/pango-1.0 -I/usr/local/Cellar/atk/2.16.0/include/atk-1.0 -I/usr/local/Cellar/cairo/1.14.2_1/include/cairo -I/usr/local/Cellar/pixman/0.32.6/include/pixman-1 -I/usr/local/Cellar/fontconfig/2.11.1/include -I/usr/local/Cellar/freetype/2.5.3_1/include/freetype2 -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/usr/local/Cellar/libpng/1.6.17/include/libpng16 -I/usr/local/Cellar/gdk-pixbuf/2.30.8/include/gdk-pixbuf-2.0 -I/usr/local/Cellar/libpng/1.6.17/include/libpng16 -I/usr/local/Cellar/glib/2.44.1/include/glib-2.0 -I/usr/local/Cellar/glib/2.44.1/lib/glib-2.0/include -I/usr/local/opt/gettext/include -L/usr/local/Cellar/gtkmm/2.24.4_1/lib -L/usr/local/Cellar/atkmm/2.22.7/lib -L/usr/local/Cellar/gtk+/2.24.28_2/lib -L/usr/local/Cellar/gtkmm/2.24.4_1/lib -L/usr/local/Cellar/glibmm/2.44.0/lib -L/usr/local/Cellar/pangomm/2.36.0/lib -L/usr/local/Cellar/glibmm/2.44.0/lib -L/usr/local/Cellar/cairomm/1.11.2_1/lib -L/usr/local/Cellar/libsigC++/2.4.1/lib -L/usr/local/Cellar/gtk+/2.24.28_2/lib -L/usr/local/Cellar/pango/1.36.8_1/lib -L/usr/local/Cellar/atk/2.16.0/lib -L/usr/local/Cellar/cairo/1.14.2_1/lib -L/usr/local/Cellar/gdk-pixbuf/2.30.8/lib -L/usr/local/Cellar/glib/2.44.1/lib -L/usr/local/opt/gettext/lib -lgtkmm-2.4 -latkmm-1.6 -lgtk-quartz-2.0 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgtk-кварц-2.0 -lgdk-кварц-2.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
Теперь в Xcode откройте файл своего проекта и выберите цель, в настройках сборки вам необходимо скопировать флаги, полученные с терминала, в "Другие флаги компоновщика" и "Другие флаги C"
На этом этапе вы должны иметь возможность запускать, компилировать, собирать и т. Д. C++ проекты, использующие gtkmm в Xcode.
Ответ основан на деталях из ответа пользователя 2618142 + ссылка
Также как в сторону, если вы получаете ошибку
нет подходящего конструктора для инициализации 'GTK::Main'
на линии Gtk::Main kit( argc, argv )
это вероятно потому, что Xcode по умолчанию создает основной как это int main(int argc, const char * argv[])
но gtkmm использует argv в качестве неконстантного параметра, поэтому вам нужно изменить основную функцию на int main(int argc, char * argv[])
,