如何在Xcode中使用pkg-config设置包含路径?

11
例如,如果我需要Gtk+的包含路径。 如何在Xcode项目设置中使用pkg-config gtk+-2.0 --cflags
5个回答

3
  1. Create an aggregate target
  2. In Build Phases, add a Run Script

    #!/bin/bash
    
    OTHER_CPLUSPLUSFLAGS="$(pkg-config gtk+-2.0 --cflags)"
    echo -e "OTHER_CPLUSPLUSFLAGS = \$(inherited) ${OTHER_CPLUSPLUSFLAGS}" > MyApp.xcconfig
    
  3. In Info in your project, set MyApp.xcconfig as your target configuration file

  4. In Build Phases in your app target, add the aggregate target as a dependency
  5. Exclude MyApp.xcconfig in your version control

一个缺点是,直到您至少直接或间接地构建聚合目标一次,自动完成才能正常工作。


3

有一种选择,但在项目中对其他开发人员不太便携 - 您可以在终端中运行pkg-config gtk+-2.0 --cflags并将其粘贴到Build Settings -> Other C Flags中。但我很想听听其他人如何以更便携的方式处理这个问题。理想情况下,在编译时运行pkg-config可以使构建更加独立于系统。


我也尝试过这种方法,虽然不是最理想的,但目前为止这是我找到的最好的解决方案。理想情况下,Xcode应该有一个Gtk框架。这里有一个,但是该页面还警告说它对最终用户的使用不够稳定:https://sourceforge.net/apps/trac/gtk-osx/wiki/Build#Framework - ptomato
完成这些步骤后,我在Xcode中仍然遇到了“Gtk/gtk.h:没有那个文件或目录”的问题。我有什么遗漏吗? - Winston Chen

0
更加便携的方法是编写一个脚本,将 pkg-config 的输出写入 .xcconfig 文件中,然后将其包含在您的项目中。只需确保不要将其添加到源代码库中即可。

0
  • 使用一个使用pkg-config和其他shell工具来构建lib的makefile。
  • 为该lib创建一个小型、无依赖的API文件,可以在XCode中编译,并将其和构建的lib包含在XCode构建中。

  • 可选:将makefile构建封装到XCode的“Run Script”构建步骤中。


0
除了@keithyip的优秀回答之外,如果需要链接器标志,可以使用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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接