带pkg-config的XCode

时间:2014-02-12 14:25:10

标签: xcode gtkmm pkg-config

您好我在XCode项目中使用gtkmm,我想知道如何在不使用命令行的情况下包含标题并手动添加它们。有没有办法在XCode中使用pkgconfig而不用这种方式,即一些额外的参数或什么?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

可能看起来here

如果存在该包的pkg-config文件,则可以使用.pc。这些文件通常位于/usr/share/pkgconfig。您也可以通过以指定格式编写头文件目录和库目录来准备自己的.pc文件。

只需查看.pc文件的内容即可直观了解。

答案 1 :(得分:0)

我知道这已经过时了,但我能够在Xcode 6中使用gtkmm,所以我想我会分享。

假设您的mac上已经安装了gtkmm和Xcode 6,以下步骤应该允许您将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 / i nclude / 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 / lo cal / 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-quartz-2.0-lgdk-quartz-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中打开你的项目文件并选择你的目标,在构建设置中你需要将你从终端获得的标志复制到“Other Linker Flags”和“Other C Flags”

此时你应该能够运行,编译,构建等在Xcode中使用gtkmm的c ++项目。

根据user2618142的回答+ link

的详细信息进行回答

另外,如果您收到错误

  

没有用于初始化'GTK :: Main'的匹配构造函数

Gtk::Main kit( argc, argv )行上的

可能是因为默认情况下Xcode创建了一个像int main(int argc, const char * argv[])这样的main,但是gtkmm使用argv作为非const参数,所以你需要将你的main函数改为{{1 }}