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