如何使用qmake额外编译器预编译头文件?

时间:2013-01-29 05:24:55

标签: qmake

当使用默认的qmake编译器(通过SOURCES变量)时,我可以像这样使用预编译的头文件:

CONFIG += precompile_header
PRECOMPILED_HEADER = stable.h
SOURCES = main.c

但是,我想使用自定义编译器(通过QMAKE_EXTRA_COMPILERS)。我试过这个:

CONFIG += precompile_header
PRECOMPILED_HEADER = stable.h
MY_SOURCES = main.c

my.input = MY_SOURCES
my.output = ${QMAKE_FILE_IN_BASE}.o
my.commands = clang $$QMAKE_CFLAGS_USE_PRECOMPILE -c ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
QMAKE_EXTRA_COMPILERS += my

...并且构建了预编译的头文件,但是我的自定义编译器失败了,因为QMAKE_CFLAGS_USE_PRECOMPILE没有包含预编译头文件的路径。 (它定义为-Xclang -include-pch -Xclang ${QMAKE_PCH_OUTPUT},显然${QMAKE_PCH_OUTPUT}为空。)

如何获取生成的预编译头的名称,以便将其作为参数传递给自定义编译器?

1 个答案:

答案 0 :(得分:2)

查看qmake源代码,预编译的头文件处理似乎在UnixMakefileGenerator::init()中被硬编码,仅适用于内置的C,CXX,OBJC和OBJCXX编译器。

对于GCC和Clang样式的预编译头文件,

QMAKE_PCH_OUTPUT是通过组合PRECOMPILED_DIRTARGETc / c++ / {{{}之一构建的1}} / objective-cobjective-c++。因此,在问题的第二个示例中,以下命令行应该起作用:

QMAKE_PCH_OUTPUT_EXT