如何为 xcode 添加全局包含路径

Posted

技术标签:

【中文标题】如何为 xcode 添加全局包含路径【英文标题】:How to add a global include path for xcode 【发布时间】:2010-10-19 10:34:06 【问题描述】:

我想在使用 Xcode 时将 ~/include 添加到 all 项目的包含路径中,例如在 Linux 中设置环境变量 CPLUS_INCLUDE_PATH。 (有关 Linux 的相关问题,请参阅 here。)

这在 Xcode 中可行吗?我尝试设置上述环境变量,但它似乎不起作用。 (如果可能的话,我还想设置相关的路径,比如 LIBRARY_PATH 和 LD_LIBRARY_PATH。)

【问题讨论】:

【参考方案1】:

根据Apple's Docs,您可以使用environment variable 为任何构建设置提供默认值。

在这种情况下,您需要设置HEADER_SEARCH_PATHS。由于某种原因,我不明白,这不起作用。它适用于其他构建设置(例如,OTHER_CFLAGS),但不适用于HEADER_SEARCH_PATHS。您可以通过在构建设置窗口中打开研究助手(左下角的预订按钮)来查看任何设置的变量名称。

一个有效的变量是USER_HEADER_SEARCH_PATHS,这就像你想要的一样,但只适用于双引号中的路径(而不是尖括号中的路径。)

所以

#include "bar.h"

可以,但是

#include <bar.h>

不会。

上述关于环境变量的文章中引用的构建设置 plist 最终应该看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>USER_HEADER_SEARCH_PATHS</key>
    <string>~/test</string>
</dict>
</plist>

希望对您有所帮助。

【讨论】:

【参考方案2】:

对于你们中的任何人祝福的宝贝,他们正试图实现这个,或任何其他 hack ~/.MacOSX/environment.plist,又名全局环境变量在这个后山狮世界中,查看EnvPane - An OS X preference pane for environment variables

EnvPane 是 Mac OS X 10.8 (Mountain Lion) 的首选项窗格,可让您在图形和终端会话中为所有程序设置环境变量。它不仅恢复了对 Mountain Lion 中 ~/.MacOSX/environment.plist 的支持,它还立即发布您对环境的更改,而无需注销并重新登录。即使手动编辑 ~/ .MacOSX/environment.plist,而不仅仅是通过首选项窗格进行的更改。

【讨论】:

【参考方案3】:

HEADER_SEARCH_PATHS 构建设置添加到您的Xcode 项目中。此设置采用空格分隔的路径列表,如果路径以双星 (**) 结尾,它将递归搜索子目录。因此,要回答您的示例,请将HEADER_SEARCH_PATHS 设置为:

~/include

如果您有许多要包含的路径,您可以将其设置为:

~/include ~/my_other_includes/** /usr/local/special_frameworks/**

【讨论】:

我想要一个 global 设置,这样我就不必为每个 Xcode 项目添加相同的路径。 好吧,你最初并没有真正说明这一点。正如 Jesse 所说,您也可以在您的环境中设置构建设置,我想这对您有用。【参考方案4】:

只需在“组和文件选项卡”中选择一个 .c 或 .m 文件,然后通过 RMB 选择“获取信息”, 然后在“构建”下,您可以添加额外的编译器标志,如 -I 以额外包含搜索路径。

【讨论】:

【参考方案5】:

构建设置不是环境变量,环境变量也不是构建设置。设置环境变量不会影响 Xcode 构建。

USER_HEADER_SEARCH_PATHS 是一个构建设置,将路径列表放入其中将实现您想要的。如果您在目标的检查器中设置该值,它将仅对该目标生效(并且仅对您指定的构建配置生效)。如果您在项目检查器中设置它,它将在项目中的所有目标中生效,除非目标用自己的设置覆盖它。

对于特定于您的机器的路径,您可能应该在 Xcode 首选项中定义一个源代码树,例如 LOCAL_INCLUDE = ~/include 。然后在项目中定义USER_HEADER_SEARCH_PATHS = $(LOCAL_INCLUDE)。这样,其他人可以打开您的项目并通过将其源树设置为他们机器上本地包含的特定位置来构建它,而无需更改项目文件。

【讨论】:

设置环境变量确实会影响构建设置。它在 Apple 的文档中非常清楚地说明了这一点,并且有效。 您的断言与实际使用不一致。 -1 用于猜测。

以上是关于如何为 xcode 添加全局包含路径的主要内容,如果未能解决你的问题,请参考以下文章

如何为新安装的 Boost 添加编译器包含路径和链接器库路径?

Xcode 13:如何为“找不到库”添加库搜索路径

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

我应该如何为 linux 内核模块构建设置额外的包含路径?

如何为包含空格的 Jenkins 环境变量指定值

Power Query:如何为列表中的每一行添加列