将系统标题searchpath添加到Xcode

(发布这个问题作为参考,我会立即回答)

如何添加标题searchpath到Xcode? 特别是当包含这个语法时:

include <myheader.h> 
  1. 全局添加path到所有项目,如系统标题。
  2. 仅将path添加到特定项目。

我们有两个select。

  1. 查看Xcode首选项中的首选项 – >位置 – >“源代码树”。 这里添加的path将是一个系统级别的path,可用于所有项目。

  2. 在项目信息的构build设置中设置HEADER_SEARCH_PATHS参数。 我在这里添加了"${SRCROOT}"而没有recursion。 这个设置适用于大多数项目。

关于第二个选项:

Xcode使用具有GCC兼容命令集的Clang。 GCC有一个选项-Idir ,它添加了系统标题searchpath。 这个选项可以通过Xcode项目构build设置中的HEADER_SEARCH_PATHS访问。

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

但是,一些OS X用户(如我)可能会把他们的项目放在包括应该逃脱的空白的path上。 如果您手动input,可以像/Users/my/work/a\ project\ with\ space一样转义。 您也可以使用引号将它们转义为使用环境variables(如"${SRCROOT}"

或者只是使用. 指示当前目录。 我在Webkit的源代码中看到了这个技巧,但是我不确定在构build它时当前目录将被设置为项目目录。

${SRCROOT}是Xcode预定义的值。 这意味着源目录。 您可以在参考文档中find更多的值。

PS。 其实你不必使用大括号{} 。 我得到与$SRCROOT相同的结果。 如果你知道不同之处,请告诉我。

跟随Eonil的回答与项目水平设置有关。 在选定目标并select“生成设置”选项卡的情况下,标题searchpath的searchpath下可能没有列表。 在这种情况下,您可以从search栏的“基本”更改为“全部”,标题searchpath将显示在searchpath部分。

虽然这个问题有一个答案,但是当我遇到同样的问题时,我的解决方法是不同的。 当我使用“ Create Folder references ”选项复制文件夹时遇到此问题; 那么上面的解决scheme将文件夹添加到build_path工作。 但是,当使用Create groups for any added folder选项Create groups for any added folder ,标题被自动拾取。

使用引号只是为了完整性。

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

如果不是recursion的,删除/**