2

私はテキスト エディター (ほぼ IDE) に取り組んでおり、舞台裏 (トークン化、診断) で llvm/clang を使用しています。編集されるほぼすべてのファイルには、他のヘッダー (含まれるファイルのツリー) を含むいくつかのヘッダーも含まれるメイン ヘッダー ファイルが含まれます。

UserFile.h
L----MainHeader.h
     L----string.h
     L----device.h
     |    L----(in some conditions)---concreteDevice.h
     L----math.h
     |
     ...

主なアイデアは、「UserFile.cpp」の編集中clang_parseTranslationUnitおよびclang_reparseTranslationUnit呼び出し中に同じままであるヘッダーの再解析をスキップすることです。

Clang のチェーン化されたプリコンパイル済みヘッダーや、必要と思われるモジュールについて読んだことがあります。

PCH for MainHeader.hlikeclang++ -x c++-header MainHeader.h -emit-pch -o MainHeader.h.pchを生成し、 like として使用しましたclang++ -include-pch MainHeader.h.pch ...。ヘッダーツリー全体(連鎖)のPCHなのか、そのファイルのみのPCHなのか(ほとんどの場合)はわかりません。

CXTranslationUnit_PrecompiledPreambleclang オプションがあるため、チェーンされたプリコンパイル済みヘッダーが必要ですか?

チェーンされたプリコンパイル済みヘッダーを生成するにはどうすればよいですか?

ヘッダー ツリーは複数あるためかなり複雑であり#ifdef SOME_CONDITION .. #include <SomeHeader.h> #endif、ツリー全体を理解して各ヘッダー ファイルを手動でプリコンパイルするのはかなり困難です (ただし、インクルージョン ツリーに影響を与えるPCH引数を渡すことは知っています)。-DSOME_CONDITION

4

0 に答える 0