libclang:如何区分项目和系统包含? 我使用LILCLANG(Python BIDENS)解析一些C++代码。 我需要区分解析为系统头的包含(例如,#include),以及解析为项目本地头的包含(例如,#include“my_header.h”)
问题是我无法找到从libclang AST检索此信息的方法 一些想法/考虑:libclang:如何区分项目和系统包含? 我使用LILCLANG(Python BIDENS)解析一些C++代码。 我需要区分解析为系统头的包含(例如,#include),以及解析为项目本地头的包含(例如,#include“my_header.h”),c++,libclang,C++,Libclang,问题是我无法找到从libclang AST检索此信息的方法 一些想法/考虑: 由于使用-E(仅运行预处理器)运行clang,因此信息必须存在于某个位置,系统包含通过在包含时附加标志3来标记。示例: #1”/usr/bin//lib/gcc/x86_64-linux-gnu/9/../../../../../../include/c++/9/exception“13 当然,我可以自己调用预处理器并匹配结果,但这会增加开销和更多潜在的bug源 只需在include语句的标记中查找vs“”,它们就不
- 由于使用
(仅运行预处理器)运行clang,因此信息必须存在于某个位置,系统包含通过在包含时附加标志-E
来标记。示例:3
#1”/usr/bin//lib/gcc/x86_64-linux-gnu/9/../../../../../../include/c++/9/exception“13
- 当然,我可以自己调用预处理器并匹配结果,但这会增加开销和更多潜在的bug源
- 只需在include语句的标记中查找
vs
”,它们就不起作用,因为它们只是确定查找顺序“
- 检查诸如
之类的扩展包含文件路径的开头不起作用,因为它不是独立于平台的,用户可以通过/usr/lib/..
添加自定义“系统”目录-issystem
我希望您能在这方面帮助我:)为什么您需要区分项目和系统包含?高度简化,我需要递归地遍历项目包含,但系统包含没有帮助?@n.“代词是m。从第一眼看,我想这可以解决我的问题,但Python绑定中没有公开此函数:(那么,添加它,然后提交一个补丁…为什么需要区分project和system includes?经过大量简化,我需要递归地遍历project includes,但不是system includes是否有帮助?@n.“代词m。从第一眼看,我想这会解决我的问题,但Python绑定中没有公开此函数:(那么,添加它,然后提交一个补丁。。。