保持我的基于Clang的工具不分析源代码中的头文件?

时间:2016-06-22 21:20:14

标签: c++ clang llvm libtooling

我正在编写一个基于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()))
}

1 个答案:

答案 0 :(得分:1)

您正在做的是跳过系统头文件的方法。 但是,如果要跳过所有包含的标题,则可以使用--isystem=<custom include dirs>而不是仅仅-I <custom include dirs>命令行选项指定包含目录。通过该更改,所有自定义包含标头都将被视为系统标头,并将被跳过。