2010-08-22 35 views
0

在一个Qt项目中,我需要提供一个自定义的make dist。因此,我增加了以下行*.pro文件:如何覆盖Qmake的`make dist`默认目标?

QMAKE_EXTRA_TARGETS += dist 
dist.commands = [...] 

这样的作品,但显示以下警告每次我运行make时间:

Makefile:209: warning: overriding commands for target `dist' 
Makefile:188: warning: ignoring old commands for target `dist' 

除此之外,它工作得很好,完全覆盖Qmake的默认目标为make dist。但警告真的很烦人。

我可以使用不同的目标名称,例如make dist-all,但make dist已建立的标准命令。是否可以覆盖Qmake的make dist而不会收到警告?

也许我在错误的轨道上?我应该以不同的方式处理这个问题吗?

回答

0

产生的警告做出没有QMAKE,因为DIST被定义了两次 - 这是不允许的。你不能重新定义目标dist无需重新编译QMAKE,因为目标dist被硬编码QMAKE /发电机/ UNIX/unixmake.cpp

它是由qmake的生成后解决,你可以编辑Makefile的问题(例如使用一个脚本,wrapps的qmake调用,然后删除该标准的目标dist)

或使用其他目标名称,如“myDist”

+0

就在鸡蛋里挑骨头:这个问题已经指出的警告来自时许,不是qmake。尽管如此,qmake首先会生成重复的dist目标。如果* .pro文件重新定义它,它可以简单地压制写它自己的dist目标。但出于一些奇怪的原因,它将它们都写入Makefile中。 – vog 2010-08-31 02:24:09

+0

事后重写Makefile是不可靠的,因为每次更改* .pro文件后,Makefile都会自行重新生成(通过调用qmake)。 – vog 2010-08-31 02:26:00

+0

为什么default-lieist-target被写入makefile并不奇怪 - 它在qmake源代码中被硬编码。 – 2010-08-31 03:41:16