我正在尝试在C ++ XCode项目中使用标准系统头文件:
#include <openssl/bio.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
构建失败并抱怨:
"Openssl/bio.h: No such file or directory"
我在项目设置中将/ usr / include添加到“标题搜索路径”,但这并没有解决它。
我可以通过添加整个路径来修复它:
#include </usr/include/openssl/bio.h>
- 但该项目充满了类似的包含,我不想以这种方式改变所有这些。此外,我觉得我不应该这样做。
修复它的另一种方法是提到另一个线程,即将/ usr / include添加到用户标题搜索路径。但如果我这样做,那么我必须更改所有尖括号&lt;&gt;引用“”,这看起来像是一个黑客。我的意思是,这些是标准的系统头文件,所以我觉得它应该是简单的,不需要这些黑客攻击。
有什么想法吗?
谢谢!
答案 0 :(得分:14)
Xcode使用当前选择的SDK作为基本路径,它作为系统包含的前缀。因此,如果您的SDK为/Developer/SDKs/MacOSX10.6.sdk
,那么系统默认情况下,它会在/Developer/SDKs/MacOSX10.6.sdk/usr/include
下查找系统包含。
有各种可能的解决方法 - 我可能只是在/Developer/SDKs/MacOSX10.6.sdk/usr/include
指向/usr/include/openssl
时添加一个符号链接,但你现在可能会想到其他人你知道潜在的问题。
答案 1 :(得分:1)
这可能取决于HFS(+)不区分大小写的事实。错误消息使用大写“O”来讨论“Openssl / bio.h”,但是您在include中指定了“openssl / bio.h”,并在/ usr / include中指定了工作。
我怀疑你的include路径中有一些“Openssl”(大写“O”)目录,在查找“openssl / bio.h”时会被使用。如果HFS(+)从一开始就区分大小写就不会发生这种情况(我知道它可能具有区分大小写,但它实际上是一个PITA使用...)
答案 2 :(得分:0)
我已经能够避免必须通过确保为文件夹选项选择为任何添加的文件夹创建组来指定包含路径添加文件时弹出的“添加文件到项目”对话框。
使用另一个选项,为任何添加的文件夹创建文件夹参考,我必须通过完整路径手动将其指向文件(并且文件夹图标显示蓝色而不是正常的米色)。有趣的是,即使在这种情况下,AutoComplete也会看到该文件,但Xcode抱怨它无法找到它。