将系统头搜索路径添加到 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的主要内容,如果未能解决你的问题,请参考以下文章