在网上找到的 clang 工具示例总是在玩具示例上运行,这些示例通常都是非常琐碎的 C 程序。
我正在构建一个对 C++ 代码执行源到源转换的工具,这显然是一项非常非常具有挑战性的任务,但 clang 可以胜任这项任务。
我现在面临的问题是,clang 为任何使用 STL 的 C++ 代码生成的 AST 是巨大的。例如,我有一些 C++ 代码,其中clang++ -ast-dump ... | wc -l
有 67,018 行可怕的 AST gobbledygook!
其中 99% 是标准库的东西,我的目标是在我的源到源元编程任务中忽略它们。所以,为了实现这一点,我想简单地过滤掉文件。假设我只想查看我正在分析的项目头文件中的类定义(并忽略所有标准库头文件的内容),我只需要弄清楚我的每个CXXRecordDecl
's 来自哪个头文件!
这可以做到吗?
编辑:希望这是一种解决方法。现在试试这个......重要的是它必须告诉我decls出来的标题,而不是对应于翻译单元的cpp文件。