如何防止运行 qmake on make clean?
How to prevent running qmake on make clean?
问题是如果 pro 文件被更改 'qmake' 试图在 'make clean' 期间生成新的 makefile。
重现这种情况的步骤:
- qmake test.pro
- 触摸test.pro && 清洁
这里是 pro 的一个最小示例:
TARGET = qmake-runs-on-make-clean
TEMPLATE = app
warning(qmake runs even if it's make clean)
我想摆脱这种行为,或者至少让 qmake 不在 'make clean'
上处理 pro 文件的某些部分
我怎样才能做到这一点?
编辑生成的Makefile,去掉调用qmake的部分。
但这条规则是有原因的。也许您正在尝试解决其他问题?
经过一番研究,我得出了一个外观不佳但可行的解决方案。
qmake 有一个名为 'no_autoqmake' 的 undocumented option。所以我将它传递给 CONFIG,然后编写了我自己的 Makefile 目标。
CONFIG += no_autoqmake
for(arg, QMAKE_ARGS){
tmp = $$section(arg, =, 0, 0)
!equals(tmp, MAKE_ARGS){
QMAKE_ARGUMENTS += $$arg
}
}
promod.name = on_pro_modified
promod.target = Makefile
promod.commands = $$QMAKE_QMAKE $$_PRO_FILE_ $$QMAKE_ARGUMENTS MAKE_ARGS='$(MAKECMDGOALS)'
promod.depends = $$_PRO_FILE_ $$QMAKE_INTERNAL_INCLUDED_FILES
PRE_TARGETDEPS += $$_PRO_FILE_
QMAKE_EXTRA_TARGETS += promod
contains(MAKE_ARGS, clean) : CLEAN_MODE_ACTIVATED=1
如果有人找到更好的解决方案,请分享。
问题是如果 pro 文件被更改 'qmake' 试图在 'make clean' 期间生成新的 makefile。
重现这种情况的步骤:
- qmake test.pro
- 触摸test.pro && 清洁
这里是 pro 的一个最小示例:
TARGET = qmake-runs-on-make-clean
TEMPLATE = app
warning(qmake runs even if it's make clean)
我想摆脱这种行为,或者至少让 qmake 不在 'make clean'
上处理 pro 文件的某些部分我怎样才能做到这一点?
编辑生成的Makefile,去掉调用qmake的部分。
但这条规则是有原因的。也许您正在尝试解决其他问题?
经过一番研究,我得出了一个外观不佳但可行的解决方案。 qmake 有一个名为 'no_autoqmake' 的 undocumented option。所以我将它传递给 CONFIG,然后编写了我自己的 Makefile 目标。
CONFIG += no_autoqmake
for(arg, QMAKE_ARGS){
tmp = $$section(arg, =, 0, 0)
!equals(tmp, MAKE_ARGS){
QMAKE_ARGUMENTS += $$arg
}
}
promod.name = on_pro_modified
promod.target = Makefile
promod.commands = $$QMAKE_QMAKE $$_PRO_FILE_ $$QMAKE_ARGUMENTS MAKE_ARGS='$(MAKECMDGOALS)'
promod.depends = $$_PRO_FILE_ $$QMAKE_INTERNAL_INCLUDED_FILES
PRE_TARGETDEPS += $$_PRO_FILE_
QMAKE_EXTRA_TARGETS += promod
contains(MAKE_ARGS, clean) : CLEAN_MODE_ACTIVATED=1
如果有人找到更好的解决方案,请分享。