【发布时间】:2015-10-05 01:41:15
【问题描述】:
所以,我有一个 Xcode 项目,其中包含来自外部库(静态)的标头的源代码
包含以普通方式完成:
#include <iostream>
#include <string>
#include <jsapi.h>
第三行导致编译错误:'jsapi.h' file not found
例如:Lexical or Preprocessor issue 'jsapi.h' file not found
现在我知道我应该将包含文件夹添加到项目设置中。所以我打开了这些项目并进入了Header Search Paths 下的Search Paths 类别,我在标题真正所在的位置添加了/usr/local/include/。还是一样的错误。我尝试在/Users/.../include/ 下复制它们并指向那里 - 仍然是同样的错误。
所以我尝试通过 SO,人们建议使用 User Header Search Paths,这样做了 - 仍然是同样的错误。
现在我知道这将是一件很愚蠢的事情,但为什么 Xcode 不默认搜索这些路径(假设 / 表示根文件夹 - 因为某种原因我的 C 标头在 ./Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/ 下)。我可以尝试在那里复制那些头文件,但是……这只会弊大于利。
【问题讨论】:
-
jsapi.h在哪里?另外,它应该是#include "jsapi.h"而不是#include <jsapi.h> -
为什么不去编译“选项卡”看看生成的命令行呢?您将看到 Xcode 是否正确生成了 -I 选项。 (它总是对我有用)。在命令行中执行 mdfind jsapi.h 以确认头文件所在的位置也会有所帮助。
-
#I'L'我不应该(我正在从 Linux 系统迁移项目,您使用 大括号作为基于库的包含,只需添加 -I... 包含文件夹小路)。除非 Mac 对这些有不同的标准。
-
#Laurent Michel - 对于
mdfind jsapi.h,结果是正确的(我正在寻找它)。我在 Xcode 内部定位时遇到了一些小问题 - 你能给我提示或两个导航到编译“选项卡” -
我刚刚意识到
-I...甚至没有添加到编译器标志中。这怎么可能?!
标签: c++ objective-c c xcode macos