2010-08-22 36 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