根据官方文档,LibTooling 是可以用来实现编译器外部的前端工具。可以完成操作AST等工作。
最先使用的 llvm 3.4.2,有几个 test 没通过,于是切换到最新的 llvm 3.7。cmake 时需要加上生成 compile database 的选项:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Release llvm/src/root/
之后在编译目录内
make check-all
编译并执行测试。
cmake 的时候会生成一个 compile_commands.json 数据文件,在使用 LibTooling 的时候,例如clang-check时,保证 pwd 里有它,可以使用软链接 ln -S 到目的目录。
可以仿照 llvm/tools/clang/tools 下的工具实现自己的 Tooling。