Xcode 4.5.1中头文件搜索路径无效,<directory/file.h>文件未找到。

14
我已在我的主目录下添加了一个包含文件夹。我可以从构建目录运行“ls -l ~/include”。 我已将该目录添加到“头文件搜索路径”和“用户头文件搜索路径”中。在这两个位置,我都尝试了非递归和递归两种方式。 但是,在任何情况下,Xcode 4.5.1都找不到第一个声明的头文件。
在源代码calls.m中已经声明了它:
 #include <directory/file.h>

我遇到了一个“词汇或预处理器问题 'directory/file.h' 文件未找到”的错误。

但是,当从命令行运行xcodebuild时,它没有任何问题来构建源代码。

我尝试了许多在互联网上找到的建议:

  • 将include放在我的驱动器上的/usr/中
  • 向项目添加索引,添加没有复制和标记为“添加到目标”的文件。
  • 重新启动xcode。
  • 指定所有特定路径。

但仍然无法解决问题。

问题出在哪里?Xcode里有bug吗?

2个回答

20

我遇到了类似的问题,原因是我在定义Header搜索路径时设置的路径中有空格。例如,我将以下内容定义为搜索路径:

$(SRCROOT)/Frameworks/Headers

这个路径被扩展成了以下内容:

/Users/skoota/Documents/Xcode Projects/My App/Frameworks/Headers

你可以看到,该路径中有空格(由于使用了$(SRCROOT)变量,这一点不是立即显现),编译器不是特别喜欢这些空格。我通过将搜索路径更改为以下内容来解决这个问题:

"$(SRCROOT)"/Frameworks/Headers

(注意,$(SRCROOT)周围有引号,用于转义空格)。现在,它扩展为:

"/Users/skoota/Documents/Xcode Projects/My App"/Frameworks/Headers

它工作得很好,尽管嵌入的引号看起来有点奇怪。我花了一段时间才弄清楚,希望能对你有所帮助!


5

如果您的目录路径中有空格,通常会出现这种情况。要解决此问题,请在路径周围使用双引号。

假设您想使用您的项目目录,则应使用:$PROJECT_DIR。如果您想搜寻文件夹中的内容,请启用递归。或者,您可以使用$(SRCROOT)


1
不要在意那个踩票,这段代码虽然短小,但对我很有帮助,谢谢Kunal。我已经苦恼了好一阵子。 - Arbitur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接