如何使用clang为makefile或cmakelist生成项目的所有ast文件?

时间:2016-01-16 02:24:02

标签: cmake clang

我开发了一个基于clang的静态分析工具,它使用-emit-ast选项读取clang生成的所有AST文件,然后对它们进行分析。

测试工具时,为多个c或cpp文件生成AST文件非常方便。我可以一个一个地使用这样的命令:

clang -emit-ast test.c -o test.ast

但是当谈到使用make或cmake构建的大型项目时,我不知道如何生成所有的ast文件。有没有一种方便的方法来管理它?

2 个答案:

答案 0 :(得分:0)

您可以使用CMake中的add_custom_target

这样的事情:

add_custom_target(ast)
foreach(SourceFile ${SourceFiles})
add_custom_command(TARGET ast PRE_BUILD
                 COMMAND clang -emit-ast ${SourceFile} -o ${CMAKE_BINARY_DIR}/${SourceFile}.ast)

答案 1 :(得分:0)

不错的环境预构建说明。您还可以将此脚本嵌入到* .ps文件中...以便在验证干运行后进行更多自定义。可以在预构建和/或任何后构建环境设置中创建类似“$(ProjectDir)\ Scripts \ my-scripts \ script.ps”的目录。在管理必须在bash安装过程之前或之后启用的POSIX脚本时,这尤其有用。