当使用默认的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}
为空。)
如何获取生成的预编译头的名称,以便将其作为参数传递给自定义编译器?
答案 0 :(得分:2)
查看qmake源代码,预编译的头文件处理似乎在UnixMakefileGenerator::init()
中被硬编码,仅适用于内置的C,CXX,OBJC和OBJCXX编译器。
QMAKE_PCH_OUTPUT
是通过组合PRECOMPILED_DIR
,TARGET
,c
/ c++
/ {{{}之一构建的1}} / objective-c
和objective-c++
。因此,在问题的第二个示例中,以下命令行应该起作用:
QMAKE_PCH_OUTPUT_EXT