2016-06-22 4 views
0

私は、RecursiveASTVistorを使ってLibToolingをベースにしたスタンドアロンツールを作成しています。ソースコードに格納されたヘッダーファイルの内容を調べる必要はありません。コンパイルデータベースを変更する必要はありますか?私はこの小さなハックを使って私のツールをクラッシュさせないようにしていましたが、私が扱っているソースコードに含まれているヘッダファイルを解析するツールは必要ありません。私のClangベースのツールは、ソースコードのヘッダファイルを解析しないでください。

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

あなたがやっていることは、システムヘッダファイルをスキップする方法です。 しかし、インクルードされたすべてのヘッダをスキップしたい場合は、インクルードディレクトリを-I <custom include dirs>コマンドラインオプションの代わりに--isystem=<custom include dirs>と指定することができます。この変更により、すべてのカスタムインクルードヘッダーがシステムヘッダーとみなされ、スキップされます。

関連する問題