Anc*_*rio 5 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
该.input属性需要变量的名称,而不是文件列表。尝试拿走$$并使用xxd.input = SHADERS.
.depends另一方面,需要一个文件列表,因此使用xxd.depends = $$SHADERS.
如果设置.variable_out为HEADERS、SOURCES、 或OBJECTS,编译器将运行。但是,如果设置.variable_out为其他变量名称,则还必须进行设置.CONFIG = target_predeps才能运行编译器。
| 归档时间: |
|
| 查看次数: |
3843 次 |
| 最近记录: |