使用链式预编译头减少clang解析/重新分析时间?

时间:2015-11-05 05:35:49

标签: xcode clang llvm pch pth

我正在研究文本编辑器(几乎是IDE),我在幕后使用llvm / clang(标记化,诊断)。几乎每个被编辑的文件都包含主头文件,其中包含一些标题,其中包括一些其他标题(包含文件的树):

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

主要想法是在clang_parseTranslationUnitclang_reparseTranslationUnit调用中编辑'UserFile.cpp'时跳过重新分析标题保持不变。

我读过Clang的chained precompiled headers甚至modules,这似乎是我需要的。

我为MainHeader.h clang++ -x c++-header MainHeader.h -emit-pch -o MainHeader.h.pch生成了PCH,并将其用作clang++ -include-pch MainHeader.h.pch ...。我不确定它是整个标题树(链接)的PCH还是仅限于该文件(最有可能)。

我是否需要链接的预编译标题,因为有CXTranslationUnit_PrecompiledPreamble clang选项?

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

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

0 个答案:

没有答案