qmake:额外的编译器(处理步骤)?

时间:2013-01-10 14:48:14

标签: compiler-construction qmake extra xxd

在我基于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

1 个答案:

答案 0 :(得分:4)

.input属性需要变量的名称,而不是文件列表。请尝试删除$$,然后使用xxd.input = SHADERS

另一方面,

.depends需要一个文件列表,因此请使用xxd.depends = $$SHADERS

如果您将.variable_out设置为HEADERSSOURCESOBJECTS,编译器将会运行。但是,如果将.variable_out设置为另一个变量名,则还必须设置.CONFIG = target_predeps以使编译器运行。