如何防止在清洁时运行qmake?



问题是,如果pro-file被更改,'qmake'试图在'make clean'期间生成新的makefile。

重现此情况的步骤:

  1. Qmake test.pro
  2. 触摸 test.pro&&使其清洁

下面是一个 pro 的最小示例:

TARGET = qmake-runs-on-make-clean  
TEMPLATE = app
warning(qmake runs even if it's make clean)

我想摆脱这种行为,或者至少让 qmake 不要在"清理"上进行专业文件的某些部分

我怎样才能做到这一点?

经过一番研究,我得出了一个不好看但可行的解决方案。 QMAKE有一个名为"no_autoqmake"的未记录选项。所以我把它传递给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

如果有人找到更好的解决方案,请分享。

编辑生成的生成文件并删除调用 qmake 的部分。

但规则是有原因的。也许您正在尝试解决不同的问题?

最新更新