将系统头搜索路径添加到 Xcode

Posted

技术标签:

【中文标题】将系统头搜索路径添加到 Xcode【英文标题】:Adding system header search path to Xcode 【发布时间】:2011-03-26 14:05:09 【问题描述】:

(发布此问题以供参考,我会立即回答)

如何在 Xcode 中添加标题搜索路径? 尤其是在包含此语法时:

include <myheader.h>
    为所有项目全局添加路径,如系统头文件。 仅将路径添加到特定项目。

【问题讨论】:

【参考方案1】:

我们有两种选择。

    在 Xcode 的首选项中查看 Preferences->Locations->“Custom Paths”。如果您使用该名称保存了自定义路径,则此处添加的路径将是一个变量,您可以将其添加到项目构建设置中的“标头搜索路径”中作为“$cppheaders”。

    https://help.apple.com/xcode/mac/11.4/#/deva52afe8a4

    在项目信息的构建设置中设置HEADER_SEARCH_PATHS 参数。我在这里添加了"$SRCROOT",没有递归。此设置适用于大多数项目。

关于第二个选项:

Xcode 使用具有 GCC 兼容命令集的 Clang。 GCC has an option -Idir 添加系统标头搜索路径。此选项可通过 Xcode 项目构建设置中的HEADER_SEARCH_PATHS 访问。

但是,添加到此设置的路径字符串不应包含任何空白字符,因为该选项将按原样传递给 shell 命令。

但是,一些 OS X 用户(比如我)可能会将他们的项目放在路径上,包括应该转义的空格。如果您手动输入,您可以像/Users/my/work/a\ project\ with\ space 一样对其进行转义。您还可以使用引号对它们进行转义,以使用 "$SRCROOT" 等环境变量。

或者只是使用. 来表示当前目录。我在Webkit的源码上看到了这个技巧,但是我不确定当前目录在构建时是否会设置为项目目录。

$SRCROOT 是 Xcode 预定义的值。这意味着源目录。您可以在Reference document 中找到更多值。

PS。实际上你不必使用大括号。我得到与$SRCROOT 相同的结果。如果您知道其中的区别,请告诉我。

【讨论】:

还要注意 $SRCROOT 是包含 .xcodeproj 目录的目录,不是 Xcode 放置源文件的目录(至少在我的 Xcode 4.6.3 上) .为了找到我的源头,我必须更深入一层。 带或不带大括号的区别在于,带大括号的路径可以包含空格。 爱你的反斜杠技巧 是“先做第 1 步,再做第 2 步”,还是“做选项 1 或选项 2”? @jameshfisher 这些是选项。不是步骤。你可以选择一个你想要的。如果您不确定该选择什么,请转到选项 #2。【参考方案2】:

跟进 Eonil 关于项目级别设置的回答。选择目标并选择构建设置选项卡后,在标题搜索路径的搜索路径下可能没有列表。在这种情况下,您可以在搜索栏中将“基本”更改为“全部”,标题搜索路径将显示在“搜索路径”部分。

【讨论】:

【参考方案3】:

为了完整性而使用引号。

"/Users/my/work/a project with space"/**

如果不是递归的,删除/**

【讨论】:

另外,如上所示,请务必对变量使用大括号,而不是圆括号。后者似乎会导致带有空格的项目出现解析问题。【参考方案4】:

虽然这个问题有答案,但当我遇到同样的问题时,我的解决方法有所不同。当我使用选项 Create Folder references 复制文件夹时遇到了这个问题;然后将文件夹添加到 build_path 的上述解决方案起作用了。 但是当使用Create groups for any added folder 选项添加文件夹时,会自动拾取标题。

【讨论】:

以上是关于将系统头搜索路径添加到 Xcode的主要内容,如果未能解决你的问题,请参考以下文章

xcode7.0怎么添加使用数据库的框架

将 libxml2 添加到 Xcode 错误

Xcode 4.6 中的搜索路径混淆

/usr/include 不能在 xcode 中用作搜索路径?

gcc库文件和头文件搜索路径

Xcode 4:为啥我不能将头文件添加到单元测试目标?