如何防止运行qmake上干净?

时间:2018-05-25 14:36:06

标签: qt makefile qmake

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

重现这种情况的步骤:

  1. qmake test.pro
  2. touch test.pro&&干净利落
  3. 这是pro的最小例子:

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

    我想摆脱这种行为或者至少让qmake不要在'make clean'上继续部分pro-file

    我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

经过一番研究后,我发现了一个看起来不太好但工作正常的解决方案。 qmake有undocumented option名为' 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

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

答案 1 :(得分:0)

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

但规则是有原因的。也许你正试图解决另一个问题?