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

在基于qmake的项目中,我想在编译之前在某些文件上运行“ xxd”.根据文档,我的专业文件中的相关部分如下所示:

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.

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

如果将.variable_out设置为HEADERS,SOURCES或OBJECTS,则编译器将运行.但是,如果将.variable_out设置为另一个变量名,则还必须设置.CONFIG = target_predeps才能使编译器运行.

转载注明原文:编译器构造-qmake:额外的编译器(处理步骤)? - 代码日志