我正在编写一个基于LibTooling和RecursiveASTVistor的独立工具,我不想查看存储在源代码中的头文件的内容。我需要更改编译数据库吗?我一直在使用这个小工具来防止我的工具崩溃,但我不希望我的工具分析我所处理的源代码中包含的所有头文件。
bool VisitDecl(Decl *D) {
FullSourceLoc FullLocation = Context->getFullLoc(D->getLocStart());
const auto &SourceManager = Context->getSourceManager();
if (FullLocation.isValid() && !SourceManager.isInSystemHeader(FullLocation) && Context->getSourceManager().isInMainFile(D->getLocation()))
}
答案 0 :(得分:1)
您正在做的是跳过系统头文件的方法。
但是,如果要跳过所有包含的标题,则可以使用--isystem=<custom include dirs>
而不是仅仅-I <custom include dirs>
命令行选项指定包含目录。通过该更改,所有自定义包含标头都将被视为系统标头,并将被跳过。