2016-07-26 9 views
1

コンパイル済みの翻訳(* .qm)をリソースに編成するのに、最適な(適切な)方法は何ですか?何QMファイルがまだ発生していないと作るそこにいる、qmakeおよび生成されたqmファイル

trans_update.commands = lupdate $$_PRO_FILE_ 
trans_update.depends = $$_PRO_FILE_ 

trans_release.commands = lrelease $$_PRO_FILE_ 
trans_release.depends = trans_update $$TRANSLATIONS 

translate.depends = trans_release 

QMAKE_EXTRA_TARGETS += trans_update trans_release translate deploy 

CONFIG(release, debug|release) { 
    DESTDIR=release 
    PRE_TARGETDEPS += translate 
} 

が、問題は、最初の時間を実行qmakeは、現時点では次のとおりです。 * .qmファイルがQRCファイルに言及し、2(3)余分なターゲットによって、このように生成されました

RCC: Error in 'qml.qrc': Cannot find file ... 

コンパイルされたqmファイルをVSCに保存するという考えは嫌いです。

うまく整理する方法はありますか?

+0

私の頭に浮かぶ最初のこと:VCSに関して '* .qm'ファイルを無視するのはどうですか?私はいくつかの分でより良い解決策を思い付くかもしれません。 – maxik

+0

qrcファイルが* .qmファイルを参照すると、おかげで解決策になると思われます。 – mbg033

答えて

3

私はいくつかのプロジェクトで使用しているソリューションを指摘したいと思います。完璧ではないかもしれませんが、うまくいきます。様々なが(リリースおよびデバッグ)を使用VCSの変化をトリガー異なる*.tsファイルを生成構築するため

CONFIG(release, debug|release) { 
    TRANSLATION_TARGET_DIR = $${OUT_PWD}/release/translations 
    LANGUPD_OPTIONS = -locations relative -no-ui-lines 
    LANGREL_OPTIONS = -compress -nounfinished -removeidentical 
} else { 
    TRANSLATION_TARGET_DIR = $${OUT_PWD}/debug/translations 
    LANGUPD_OPTIONS = 
    LANGREL_OPTIONS = -markuntranslated "MISS_TR " 
} 

isEmpty(QMAKE_LUPDATE) { 
    win32:LANGUPD = $$[QT_INSTALL_BINS]\lupdate.exe 
    else:LANGUPD = $$[QT_INSTALL_BINS]/lupdate 
} 

isEmpty(QMAKE_LRELEASE) { 
    win32:LANGREL = $$[QT_INSTALL_BINS]\lrelease.exe 
    else:LANGREL = $$[QT_INSTALL_BINS]/lrelease 
} 

langupd.command = \ 
    $$LANGUPD $$LANGUPD_OPTIONS $$shell_path($$_PRO_FILE_) -ts $$_PRO_FILE_PWD_/$$TRANSLATIONS 

langrel.depends = langupd 
langrel.input = TRANSLATIONS 
langrel.output = $$TRANSLATION_TARGET_DIR/${QMAKE_FILE_BASE}.qm 
langrel.commands = \ 
    $$LANGREL $$LANGREL_OPTIONS ${QMAKE_FILE_IN} -qm $$TRANSLATION_TARGET_DIR/${QMAKE_FILE_BASE}.qm 
langrel.CONFIG += no_link 

QMAKE_EXTRA_TARGETS += langupd 
QMAKE_EXTRA_COMPILERS += langrel 
PRE_TARGETDEPS += langupd compiler_langrel_make_all 

LUPDATEにオプションsensful微調整があるかもしれません。

また、私が気をつけた読者を専門家が使用するexampleに案内したいと思います。

+0

ありがとう、明示的に答えはありませんでしたが、役に立ちました – mbg033

+0

@IlyaKitaevあなたはそれをはっきりと読んでください: 'lrelease'オプション '-qm 'が含まれています。これは組織化に役立つかもしれない。そして、私は、(* .qm'ファイル)毎回作成されるビルド製品のように、それらを(*)任意のリソースファイルに編成しません。 – maxik

+0

私は、 '_PRO_FILE_'と' _PRO_FILE_PWD_'変数が間違っていることに気づいた – Piroxiljin

関連する問題