Compiler construction qmake:额外的编译器(处理步骤)?
在我基于qmake的项目中,我想在编译之前对一些文件运行'xxd'。根据文档,my pro文件中的相关部分如下所示:Compiler construction qmake:额外的编译器(处理步骤)?,compiler-construction,qmake,extra,xxd,Compiler Construction,Qmake,Extra,Xxd,在我基于qmake的项目中,我想在编译之前对一些文件运行'xxd'。根据文档,my pro文件中的相关部分如下所示: SHADERS = shader/tone.frag \ shader/trans.frag \ shader/hue.frag # xxd xxd.output = ${QMAKE_FILE_NAME}.xxd xxd.commands = xxd -i ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
SHADERS = shader/tone.frag \
shader/trans.frag \
shader/hue.frag
# xxd
xxd.output = ${QMAKE_FILE_NAME}.xxd
xxd.commands = xxd -i ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
xxd.depends = SHADERS
xxd.input = $$SHADERS
xxd.variable_out = HEADERS
QMAKE_EXTRA_COMPILERS += xxd
Qmake没有抱怨,但它也根本不运行xxd。我是否必须为要预处理的每个文件创建特殊目标?(生成的*.xxd文件将不由我随后编译,仅包含在其他cpp文件中)
编辑:在smokris的帮助下,我在pro文件中修复了该零件:
# xxd
xxd.output = ${QMAKE_FILE_NAME}.xxd
xxd.commands = xxd -i ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
xxd.depends = $$SHADERS
xxd.input = SHADERS
xxd.variable_out = HEADERS
.input
属性需要变量名,而不是文件列表。尝试删除$
,只需使用xxd.input=SHADERS
另一方面,.dependens
需要一个文件列表,因此使用xxd.dependens=$$SHADERS
如果将
.variable\u out
设置为标题
、源
或对象
,编译器将运行。但是,如果您将.variable\u out
设置为另一个变量名,则还必须设置.CONFIG=target\u predeps
,编译器才能运行。很高兴您能使用它。我刚刚弄清楚了我对.variable\u out
的困惑,并澄清了我的答案。以防其他人看到这个问题而无法解决:我必须将${QMAKE\u FILE\u NAME}.xxd
(在我的代码中它的调用方式不同)添加到.depends列表中。所以对我来说是xxd.dependens=SHADERS$$${QMAKE\u FILE\u NAME}.xxd
。如果没有它,着色器编译器在重新构建的情况下不会执行,$${QMAKE_FILE_NAME}.xxd
从未创建过。