在我基于qmake的项目中,我想在编译之前在某些文件上运行'xxd'。在文档之后,我的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}
xxd.depends = SHADERS
xxd.input = $$SHADERS
xxd.variable_out = HEADERS
QMAKE_EXTRA_COMPILERS += xxd
Qmake没有抱怨,但它也根本没有运行xxd。我是否必须为要预处理的每个文件创建特殊目标? (由此产生的* .xxd文件将不由我编译,仅包含在其他cpp文件中)
编辑:在smokris的帮助下,这就是我在专业文件中修复该部分的方法:
# 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
答案 0 :(得分:4)
.input
属性需要变量的名称,而不是文件列表。请尝试删除$$
,然后使用xxd.input = SHADERS
。
.depends
需要一个文件列表,因此请使用xxd.depends = $$SHADERS
。
如果您将.variable_out
设置为HEADERS
,SOURCES
或OBJECTS
,编译器将会运行。但是,如果将.variable_out
设置为另一个变量名,则还必须设置.CONFIG = target_predeps
以使编译器运行。