1

我正在使用 libtooling 构建一个独立的工具。我有 a和 aFrontendAction的基本样板代码。访问者只访问我只是保存一些信息的地方。一切正常,但如果我在我正在解析的文件中出现错误:.ConsumerVisitorClassTemplateSpecializationDecl#include <string>'stddef.h' file not found

我以为编译器找不到一些系统头文件,但是我正在解析的输入文件使用 clang++ 命令编译时没有任何错误。

4

1 回答 1

1

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"
  )
于 2019-06-04T11:10:24.007 回答