3

すべてのヘッダーファイルを変更して残りのc++ファイルを変更せずに残しています。しかし、翻訳単位を再解析するたびに、libclang は大量の CPU と RAM を消費してしまいます。プリコンパイル済みヘッダーとすべてを使用していますが (生成されたプリアンブル ファイルを確認できます)、それでもかなりのリソースと時間がかかります。

これが私のコードのスニペットです。

translation_unit_ = clang_parseTranslationUnit(index_, 0, clang_argv[0],
    clang_argv.size() - 1, 0, 0,
    clang_defaultEditingTranslationUnitOptions()); 
// File name is in the arguments.


// Here I reparse again every time file changes.
clang_reparseTranslationUnit(translation_unit_, 0, 0,
    clang_defaultReparseOptions(translation_unit_));

// This is how I get diagnositics
CXDiagnostic diag = clang_getDiagnostic(translation_unit_, i);

単一の変更ソースファイルで繰り返しコンパイルエラーを見つけるための正しいセットアップを誰かに提案できますか?

4

1 に答える 1

1

clang_defaultEditingTranslationUnitOptions()最初のインデックス作成以降で使用していますclang_defaultReparseOptions()clang_defaultEditingTranslationUnitOptions()両方の場所で使用してみてください。

また、ソースの再解析が非常に高速であると期待しないでください。すべての変更再チェックすると、重要なソースファイルのパフォーマンスが低下します。最後の変更から数ミリ秒待って、複数の変更を1回の再解析に蓄積できるかどうかを確認できますか?

于 2012-04-29T20:00:35.717 に答える