2

我正在开发一个基于 clang 的工具,我用它来处理由 clang 生成的 AST。现在我正在 llvm-project 树中进行开发(我克隆了整个存储库),如本教程中所述。如前所述,我创建了 CMakeLists.txt,并执行了教程中所示的 cmake 命令。

项目编译,输出二进制文件位于 build/bin 中,其他二进制文件位于 llvm-project 源代码树中。当我从 build/bin 执行我的二进制文件时,在解析输入的 c++ 文件时,一切顺利。

但是,当我将生成的二进制文件复制到我的主目录或其他任何地方并执行它时,在解析时,它无法找到标准头文件,例如 stddef.h:

/usr/include/stdlib.h:32:10: fatal error: 'stddef.h' file not found

我的问题是为什么它可以在一个地方而不是另一个地方找到标题?在其中一个论坛中,我发现:一些头文件(stddef.h、stdarg.h 和其他)随 Clang 一起提供——这些被称为内置包含。Clang 在相对于 clang 二进制文件位置的目录中搜索它们。

我检查了二进制文件最初所在的构建目录,它包含 lib/clang/include 目录,其中还有文件 stddef.h。是否有可能通过就地执行二进制文件,它找到了这条路径,当我将它复制到其他地方时,它找不到正确的路径?

编辑

我执行的命令是:

build/bin/mytool source.cpp -- -I(list of headers without system headers)  
4

0 回答 0