如何在xcode项目中设置包含路径

Posted

技术标签:

【中文标题】如何在xcode项目中设置包含路径【英文标题】:How to set include path in xcode project 【发布时间】:2012-12-17 12:42:14 【问题描述】:

我正在尝试在 Objective-C Xcode 项目中使用 C 库。

库目录结构如下:

-- include/
    |-- config.h
    |-- lib/
    |    |-- file1.h
    |    |-- file2.h
    |    |-- file3.h

库的文档说包括 file1.h,而 file1.h 包括 file2.h 和 file3.h。

我收到包含 file2.h 和 file3.h` 的“找不到文件”错误。 它们由 file1.h 以下列方式包含:

#include <lib/file1.h>
#include <lib/file2.h>

我读到here,这些尖括号指示预处理器沿着 INCLUDE 环境变量指定的路径搜索包含文件,而不是在与包含#include 的文件相同的目录中搜索。

所以我在 Xcode 中添加了 INCLUDE 环境变量,方法是转到 Product->Edit Scheme.. 并将其设置为 /the-whole-path-to/include/ 但是,我仍然收到文件未找到错误。

如果我将 file1.h 更改为像这样包含它们,则这些文件将成功包含:

#include "file2.h"

但我不想对库中的每个文件都这样做。

我该如何解决这个问题?

【问题讨论】:

另见Xcode Build Setting Reference Apple 开发者。 【参考方案1】:

在 2021 年,Xcode v. 12.4,解决方案似乎是:

项目->目标->常规->“扫描所有源文件以查找包含”->设置为“是”

这对我有用。

但是,如果您有多个版本的特定 .h 文件,这可能会适得其反,这可能不是一个好的做法,但如果您有很多子目录,它们都有自己的迷你项目和类似命名的包含文件,则可能会适得其反。

【讨论】:

【参考方案2】:

试试这个:

1 - 在左侧 Xcode 窗格中选择您的项目文件 2 - 确保在中间 Xcode 窗格中选择了您的项目 3 - 选择中间 Xcode 窗格顶部的“构建设置” 4 - 确保在“构建设置”下方选择“全部”和“组合” 5 - 在“构建设置”正下方的搜索字段中键入标题

您应该会在中间窗格中看到可供编辑的搜索路径字段。

【讨论】:

【参考方案3】:

您可以使用“其他 C 标志”或使用“HEADER_SEARCH_PATHS”来指定包含路径,以查找可执行文件的标头。

【讨论】:

【参考方案4】:

我在 Xcode 5.0.1 中使用项目构建设置解决了这个问题(正如上面提到的 John 和 Ian,但由于

新信息:

在向 User 标头搜索路径添加包含时,我还必须将始终搜索用户路径更改为是。

向(非用户)标题搜索路径添加包含时,不需要始终搜索用户路径。

【讨论】:

【参考方案5】:

在 XCode 5.0.2 版本中,完成此操作的最佳方法可能是将其添加到目标的“搜索路径”窗格中。找到这个(对我来说)难以置信不直观。对于像我一样困惑的人,这是我的方法:

在左栏中,单击“项目导航器”图标(看起来像一个文件夹)。然后,单击项目条目。这应该在主窗格中显示一堆设置。在此窗格的顶部,单击“构建设置”。这会显示一堆条目...包括一个名为“搜索路径”的条目...但是您不能在此处添加搜索路径!这让我咬牙切齿同时,直到我发现该窗格顶部的项目名称是下拉列表;从该下拉列表中选择 target,您现在应该可以双击“标题搜索路径”并执行所需的编辑。

哦,疯狂的 GUI 带来的乐趣。

【讨论】:

我为项目添加搜索路径没有任何问题..无需切换到目标:i.imgur.com/Tcs36ec.png @BrianGordon 你的照片特别显示目标被更改为项目。 @AntonK 对,它在项目中。不是目标。蓝色图标表示项目。 JohnClements 说它必须在目标上才能显示该选项。 "这让我咬牙切齿了好一阵子,直到我发现这个窗格顶部的项目名称是一个下拉菜单;"帮我。谢谢【参考方案6】:

虽然这样可行,但最好将其放在“搜索路径”选项卡下。

【讨论】:

愿意提供路线吗? 不要将其放在“Apple LLVM 编译器 4.1 - 语言”下,而是将其放在“搜索路径”下。有一个专门用于包含。 答案应该独立存在。你的似乎参考了一个现有的答案,但是随着它们的显示顺序一直在变化,这是一个糟糕的主意。坦率地说,现有答案下方的评论将适合您要说的内容。【参考方案7】:

想通了。

您所要做的就是将 -I 标志添加到“其他 C 标志”下的构建设置中

所以在目标的构建设置中搜索“Other C Flags”并添加-I/path-to-include/

这是一个屏幕截图:

【讨论】:

在您的情况下,pathToInclude 是什么。我问这个是因为我的路径在我的 xcode 项目上,并且我尝试使用 -I/../../folder_to_include 并且它没有用。谢谢 见下面的 cmets;最好通过将 XCode 添加到搜索路径来让 XCode 知道您在做什么,而不是使用 -I 标志。 @John Clements,谢谢,最后我使用了您的解决方案,通过该路径并且它有效!而且您说得对,它更干净。谢谢 我无法使用 -I$(JAVA_HOME)/include 这样的路径,我该如何实现? 为什么这个解决方案比设置Header Search Path更好?

以上是关于如何在xcode项目中设置包含路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中设置 $(SRCROOT) 的父路径

如何在 Xcode 4 中设置 NativeControls?

如何在 xcode 中设置 lldb 的发现路径

如何在 Xcode 4.5“命令行工具”项目中设置工作逻辑单元测试目标?

如何在 Swift 中设置单元测试?

如何让自定义标签栏显示标签栏项目在 Xcode 中设置的选定图像?