我开发了一个基于clang的静态分析工具,它使用-emit-ast
选项读取clang生成的所有AST文件,然后对它们进行分析。
测试工具时,为多个c或cpp文件生成AST文件非常方便。我可以一个一个地使用这样的命令:
clang -emit-ast test.c -o test.ast
但是当谈到使用make或cmake构建的大型项目时,我不知道如何生成所有的ast文件。有没有一种方便的方法来管理它?
答案 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脚本时,这尤其有用。