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_parseTranslationUnitclang_reparseTranslationUnit调用期间保持不变的标题。

我读过 Clang 的链式预编译头文件甚至模块,这似乎是我需要的。

我已经为MainHeader.hlike生成了 PCHclang++ -x c++-header MainHeader.h -emit-pch -o MainHeader.h.pch并使用它 like clang++ -include-pch MainHeader.h.pch ...。我不确定它是用于整个标题树(链接)还是仅用于该文件(很可能)。

CXTranslationUnit_PrecompiledPreamble由于有clang 选项,我是否需要链接的预编译头文件?

如何生成链接的预编译头文件?

由于多个头文件树非常复杂,#ifdef SOME_CONDITION .. #include <SomeHeader.h> #endif并且很难理解整个树并PCH手动为每个头文件预编译(但我知道-DSOME_CONDITION要传递的参数会影响包含树)。

4

0 回答 0