使用 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 中使用编译数据库,但在 --
.
之后期望编译器有额外的参数
我按照 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 中使用编译数据库,但在 --
.