Clang dump AST本质上是对一个OC/C/C++源文件编译单元执行编译,即跟编译相关的配置都是要注意相关的参数,比如依赖的头文件的路径,特别编译的源文件依赖的其它路径下的头文件,还有就是C++新特性语法的支持等。
如下是网上容易搜索到的Clang dump AST的使用示例
clang -Xclang -ast-dump -fsyntax-only 源文件路径
如上默认的参数能正常工作的前提是处理的源文件比较简单,没用特殊的头文件以及新的C++语法特性等
我们来看下使用了C++11的bind语法后,ast dump时出现这类的错误提示(ast dump过程出错后整个AST将是不完整的!!!)
warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
error: no member named 'bind' in namespace 'std'
针对这类错误的解决方案是指定C++11语言标准,通过-std参数指定
clang -v -std=c++11 -Xclang -ast-dump -fsyntax-only 源文件路径
注:加-v主要查看当前clang include的头文件是那些
![在这里插入图片描述](https://img-blog.csdnimg.cn/9e54355e70c14cab8011879bc768a052.png)
ast-dump出错后,ast tree是不完整的!
![在这里插入图片描述](https://img-blog.csdnimg.cn/6e1570ec4eee41fd9d67f76c5e37d26a.png)
对于头文件的依赖可以使用 -I参数指定
clang -v -std=c++11 -Xclang -ast-dump -fsyntax-only 源文件路径 -I 依赖的头文件路径
-std参数说明
![在这里插入图片描述](https://img-blog.csdnimg.cn/2bba0294e4554bd0982bb20d4c656f80.png)
-I参数说明
![在这里插入图片描述](https://img-blog.csdnimg.cn/5a62240a6f584a05a255b8347cdbdce4.png)
clagn各个参数指引文档
https://clang.llvm.org/docs/ClangCommandLineReference.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)