我在这里查看了libclang标题(http://llvm.org/svn/llvm-project/cfe/trunk/include/clang-c/),其中我注意到几乎所有标题都有导入,如
#include "clang-c/Platform.h" // in CXString.h
// in Index.h
#include "clang-c/Platform.h"
#include "clang-c/CXString.h"
我无法理解为什么标题以clang-c/
为前缀,因为它们都位于同一目录中,不应该是./Platform.h
./CXString.h
同样。< / p>
答案 0 :(得分:3)
如果标题最终安装在/usr/local/include/clang-c
目录中,为了便于参数,命令行选项-I /usr/local/include
将确保找到#include "clang-c/Platform.h"
。如果未指定子目录,则必须在命令行上使用-I /usr/local/include/clang-c
。它还提供分区和分离; clang-c/Platform.h
与任何其他包中的文件Platform.h
分开。
请注意,<sys/wait.h>
这样的标头使用此方案,但有问题的sys
是O / S,标题位于/usr/include/sys
中(但您不必在编译器命令行上指定-I /usr/include/sys
,因为预处理器默认情况下已在/usr/include
中搜索。