如何使用 pkg-config 在 Xcode 中设置包含路径?
例如,如果我需要 Gtk+ 包含路径。 如何在 Xcode 项目设置中使用 pkg-config gtk+-2.0 --cflags
?
For example, if I need Gtk+ include paths.
How to use pkg-config gtk+-2.0 --cflags
in Xcode project settings?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
为将在 XCode 中编译的库创建一个小型、无依赖项的 API 文件,并将其和构建的库包含在 XCode 构建中。
可选:将 makefile 构建封装到 XCode 中的“运行脚本”构建步骤中。
Create a small, dependency-free API file for the lib that will compile in XCode, and include it and the built lib in the XCode build.
Optional: encapsulate the makefile build into a "Run Script" build step in XCode.
除了 @keithyip 的出色答案之外,如果还需要链接器标志,请使用
OTHER_LDFLAGS
:In addition to @keithyip's great answer, if linker flags are also needed, use
OTHER_LDFLAGS
:一种选择,但它对于项目中的其他开发人员来说不太方便 - 您只需在终端中运行
pkg-config gtk+-2.0 --cflags
并将其粘贴到Build Settings -> ;其他 C 标志
。我很想听听其他人如何以更便携的方式处理这个问题。理想情况下,最好在编译时运行 pkg-config 以使构建更加独立于系统。One option, but it's not very portable to other developers on the project -- you can just run
pkg-config gtk+-2.0 --cflags
in your Terminal and paste it intoBuild Settings -> Other C Flags
. I'd be interested to hear how others deal with this in a more portable way though. Ideally, it would be nice to have pkg-config run at compile-time to make building more system-independent.在构建阶段中,添加运行脚本
<前><代码>#!/bin/bash
OTHER_CPLUSPLUSFLAGS="$(pkg-config gtk+-2.0 --cflags)"
echo -e "OTHER_CPLUSPLUSFLAGS = \$(继承) ${OTHER_CPLUSPLUSFLAGS}" > MyApp.xcconfig
在项目的“信息”中,将 MyApp.xcconfig 设置为目标配置文件
一个缺点是,除非您直接或间接构建聚合目标至少一次,否则自动完成功能将无法正常工作。
In Build Phases, add a Run Script
In Info in your project, set MyApp.xcconfig as your target configuration file
One drawback is that until you build the aggregate target directly or indirectly at least once, the autocomplete will not work properly.
更可移植的是编写一个脚本,将 pkg-config 的输出写入 .xcconfig 文件,然后将其包含在您的项目中。请确保不要将其添加到您的源存储库中。
More portable would be to write a script that writes the output of pkg-config into an .xcconfig file and then include that in your project. Just be sure to not add it into your source repository.