我有一个很大的Qt项目,分为几个静态库(大约70个)和一个应用程序,为此我使用了一个带有subdirs模板的.pro文件。
为了加快编译速度,我想使用预编译头文件,我发现在每个子项目上使用PRECOMPILED_HEADER都能做到这一点,但每个项目都会单独编译预编译头文件(这是最慢的一步)。
有一种方法可以在包括在subdirs模板中的所有子项目之间“共享”预编译头?,这样预编译头就可以构建一次,并被所有子项目使用?
问候
发布于 2012-10-26 23:27:37
经过一些实验,我发现没有办法在子项目之间共享预编译头文件。我认为缺乏此功能的原因是每个子项目可能会更改编译器/预处理器标志,这将使为一个子项目构建的预编译头文件与其他子项目不兼容。
共享预编译头对于一些简单的项目可能很有用,其中编译器标志也是共享的,但我猜检测和处理与此条件的偏差对qmake来说太麻烦了。
发布于 2013-03-27 20:49:24
不幸的是,没有官方的方法。不过,您可以使用一些技巧来至少获得基本的PCH支持。
我用过
PRECOMPILED_HEADER = ../includes.h在一个项目中,只创建.pch,然后在真实项目的一些通用.pri文件中“模拟”PRECOMPILED_HEADER的后半部分。例如,在VS中,你可以这样使用:
QMAKE_CXXFLAGS += /FIincludes.h /Yuincludes.h /Fppath/to/1stproj/intdir/projname_pch.pch
#QMAKE_CXXFLAGS += /wd4651
QMAKE_LFLAGS += path/to/1stproj/intdir/projname_pch.obj你可能会遇到不同的问题。
/Z7
options.
发布于 2009-11-13 17:36:09
如果每个头文件都被单独编译到它自己的pch中,那么这是可行的。不幸的是,据我所知,在c++项目中,每个项目只有一个可以全局使用的预编译头的翻译单元。你可以为所有的项目使用一个全局文件,但这至少是有效的:这可能会导致构建时间的增加,因为每次预编译头文件被更改时,所有东西都必须重新构建。
https://stackoverflow.com/questions/1727159
复制相似问题