使用 clang LibTooling 处理复杂 CMake 结构中的独立源文件

Processing standalone source files in a complex CMake structure with clang LibTooling

我按照 https://clang.llvm.org/docs/LibASTMatchersTutorial.html

编写了自己的 clang 工具

该工具的用途是根据特定的源文件生成图表。到目前为止,作为原型,我使用了一些没有任何依赖关系的基本 cpp 代码。然而,目标项目很大并且使用 CMake,导致在我 运行 工具(如预期)时包含错误。

我发现这个问题有类似的问题:clang tool : include path,但是由于项目的规模,我认为像这样一个一个地提供包含路径是不可行的。

是否有可能以某种方式重用 CMake 结构以提供包含路径,或者递归地在根文件夹中查找 headers?

一位同事向我解释说,配置 CMake 并将 compile_commands.json 解析到工具中是可行的方法。刚才我能够做到这一点并且我有 compile_commands.json,但是我必须做一些进一步的研究来确定我如何解析它。

实现此目的的正确方法确实是通过设置 cmake 选项 CMAKE_EXPORT_COMPILE_COMMANDS=ON 创建 compile_commands.json 文件。要将其解析为您的 clang 工具,您需要使用命令行参数 -p <BUILD_PATH>,其中 <BUILD_PATH> 是 compile_commands.json 文件的路径。作为提示:not 提供 double dash -- 作为工具的命令行选项,此后该工具将不会在 compile_commands.json 中使用编译数据库,但在 --.

之后期望编译器有额外的参数