2010-12-06 28 views
6

我有一個德國的翻譯Qt工程,Translation_de.ts,它通過QMAKE自動編譯到Translation_de.qm如何爲Qmake指定自動生成的資源文件?

TRANSLATIONS += Translation_de.ts 
... 
QMAKE_EXTRA_COMPILERS += lrelease 
lrelease.input   = TRANSLATIONS 
lrelease.output  = ${QMAKE_FILE_BASE}.qm 
lrelease.commands  = $$[QT_INSTALL_BINS]/lrelease ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_BASE}.qm 
lrelease.CONFIG  += no_link target_predeps 

然後生成Translation_de.qm被編譯到最終的應用程序作爲一種資源:

RESOURCES += Resources.qrc 

其中Resources.qrc看起來是這樣的:

<RCC> 
    <qresource> 
    ... 
    <file>Translation_de.qm</file> 
    </qresource> 
</RCC> 

一這LL正常工作,所不同的是QMAKE最先呼叫重新檢出引發以下惱人的警告:

RCC: Error in 'Resources.qrc': Cannot find file 'Translation_de.qm' 

我在做什麼錯在這裏?如何正確指定一個自動生成的資源文件,如Translation_de.qm

回答

6

用qmake階段創建生成的文件。 system(lrelease...)。保留其他規則,以便在輸入文件更改時不必重新運行qmake。

2

我認爲,你想要的是隻是「ignore_no_exist」爲lrelease.CONFIG

據我所知target_predeps確保在發出「正常」編譯步驟之前被執行。所以如果它只是關於擺脫警告,只需添加上面給定的標誌。一旦你執行由qmake調用創建的makefile,你的qm創建應該可以工作。

如果您的QM文件沒有創建嘗試添加:

PRE_TARGETDEPS += compiler_lrelease_make_all 

看看這個link爲更多的選擇,可以幫助你。

+0

`qmake`不會生成它找不到的文件的依賴關係。生成的Makefile將失敗並行構建。 – 2017-12-05 08:52:49

相關問題