我正在使用 libtooling 构建一个独立的工具。我有 a和 aFrontendAction
的基本样板代码。访问者只访问我只是保存一些信息的地方。一切正常,但如果我在我正在解析的文件中出现错误:.Consumer
Visitor
ClassTemplateSpecializationDecl
#include <string>
'stddef.h' file not found
我以为编译器找不到一些系统头文件,但是我正在解析的输入文件使用 clang++ 命令编译时没有任何错误。
我正在使用 libtooling 构建一个独立的工具。我有 a和 aFrontendAction
的基本样板代码。访问者只访问我只是保存一些信息的地方。一切正常,但如果我在我正在解析的文件中出现错误:.Consumer
Visitor
ClassTemplateSpecializationDecl
#include <string>
'stddef.h' file not found
我以为编译器找不到一些系统头文件,但是我正在解析的输入文件使用 clang++ 命令编译时没有任何错误。
libTooling
对于基于 - 的工具,这是一个非常典型的错误: https ://clang.llvm.org/docs/FAQ.html#id3
一些头文件(stddef.h、stdarg.h 和其他)随 Clang 一起提供——这些被称为内置包含。Clang 在相对于 clang 二进制文件位置的目录中搜索它们。如果你移动了 clang 二进制文件,你也需要移动内置的头文件。
如果您使用CMake,您可以添加以下代码来安装 Clang 的标头:
set(CLANG_BUILTIN_HEADERS_DIR "${LLVM_LIBRARY_DIR}/clang")
install(
DIRECTORY ${CLANG_BUILTIN_HEADERS_DIR}
DESTINATION lib
FILES_MATCHING PATTERN "*.h"
)