【发布时间】:2011-03-26 14:05:09
【问题描述】:
(发布此问题以供参考,我会立即回答)
如何在 Xcode 中添加标题搜索路径? 尤其是在包含此语法时:
include <myheader.h>
- 为所有项目全局添加路径,如系统头文件。
- 仅将路径添加到特定项目。
【问题讨论】:
标签: xcode search path header system
(发布此问题以供参考,我会立即回答)
如何在 Xcode 中添加标题搜索路径? 尤其是在包含此语法时:
include <myheader.h>
【问题讨论】:
标签: xcode search path header system
我们有两种选择。
在 Xcode 的首选项中查看 Preferences->Locations->“Custom Paths”。如果您使用该名称保存了自定义路径,则此处添加的路径将是一个变量,您可以将其添加到项目构建设置中的“标头搜索路径”中作为“$cppheaders”。
在项目信息的构建设置中设置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 相同的结果。如果您知道其中的区别,请告诉我。
【讨论】:
跟进 Eonil 关于项目级别设置的回答。选择目标并选择构建设置选项卡后,在标题搜索路径的搜索路径下可能没有列表。在这种情况下,您可以在搜索栏中将“基本”更改为“全部”,标题搜索路径将显示在“搜索路径”部分。
【讨论】:
为了完整性而使用引号。
"/Users/my/work/a project with space"/**
如果不是递归的,删除/**
【讨论】:
虽然这个问题有答案,但当我遇到同样的问题时,我的解决方法有所不同。当我使用选项 Create Folder references 复制文件夹时遇到了这个问题;然后将文件夹添加到 build_path 的上述解决方案起作用了。
但是当使用Create groups for any added folder 选项添加文件夹时,会自动拾取标题。
【讨论】: