62

我正在尝试在 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>

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

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

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

#include "file2.h"

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

我怎样才能解决这个问题?

4

7 回答 7

58

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

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

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

于 2013-12-31T19:47:20.650 回答
53

弄清楚了。

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

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

这是一个屏幕截图: 在此处输入图像描述

于 2013-01-04T07:34:47.787 回答
17

试试这个:

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

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

于 2016-03-11T01:31:45.400 回答
12

我在 Xcode 5.0.1 中使用项目构建设置解决了这个问题(正如上面提到的 John 和 Ian,但由于 <50 代表我无法发表评论)。

新信息:

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

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

于 2014-01-20T06:28:20.333 回答
4

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

于 2013-09-18T19:13:01.480 回答
3

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

于 2015-08-27T16:22:19.873 回答
0

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

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

这对我有用。

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

于 2021-02-10T22:42:02.590 回答