2016-07-26 11 views
1

Was ist der beste (richtige) Weg, um kompilierte Übersetzungen (* .qm) in Ressourcen zu organisieren? * .qm Dateien in qrc Datei und erzeugen durch zwei (drei) zusätzliche Ziele auf diese Weise bezeichnet:qmake und generierte qm-Dateien

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 
} 

aber das Problem im Moment ist QMake erstes Mal ausgeführt wird, gibt es keine qm Dateien erzeugen noch und machen druckt Fehler wie:

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

Ich mag keine Idee von kompilierten qm-Dateien in VSC gespeichert.

Gibt es eine Möglichkeit, es schön zu organisieren?

+0

Das erste was mir in den Sinn kommt: Was ist mit dem Ignorieren von '* .qm' Dateien in Bezug auf VCS? Ich könnte in einigen Minuten bessere Lösungen finden. – maxik

+0

Danke, scheint eine Lösung zu sein, wenn qrc-Datei verweist * .qm-Dateien – mbg033

Antwort

3

Ich möchte auf eine Lösung hinweisen, die ich in einigen Projekten verwende. Es ist vielleicht alles andere als perfekt, aber es funktioniert gut.

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 

Es könnte ein sensful zwicken lupdate Optionen sein, weil die verschiedenen Builds (Release und Debug) erzeugen unterschiedliche *.ts-Dateien, die dann eine Änderung der verwendeten VCS auslösen.

Ich führe auch gern den geneigten Leser zu einem example, wo Experten es verwenden.

+0

Danke, während es nicht explizit die Antwort ist, war es hilfreich – mbg033

+0

@IlyaKitaev Sie müssen es deutlich zu lesen: Blick auf den Parameter der 'lrelease' Anruf, der enthält die Option '-qm '. Dies könnte in der Organisation helfen. Und ich organisiere sie nicht in irgendeiner Ressourcendatei, da sie ('* .qm' Dateien) eine Art Build-Produkt sind, das bei jedem (Release-) Build erstellt wird. – maxik

+0

Ich bemerke, dass die _PRO_FILE_ und die _PRO_FILE_PWD_ Variablen vertippt sind – Piroxiljin