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



我编写了自己的clang工具https://clang.llvm.org/docs/LibASTMatchersTutorial.html

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

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

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

实现这一点的正确方法实际上是通过设置cmake选项CMAKE_EXPORT_COMPILE_COMMANDS=ON来创建compile_commands.json文件。要将其解析为clang工具,需要使用命令行参数-p <BUILD_PATH>,其中<BUILD_PATH>是compile_commands.json文件的路径。作为提示:不要为工具提供双短划线--作为命令行选项,因为这样工具就不会在compile_commands.json中使用编译数据库,而是在--之后为编译器提供额外的参数。

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

相关内容

  • 没有找到相关文章

最新更新