Ich habe ein Qt4 CMake-Projekt und möchte die QM-Dateien für i18n in die binäre Ausgabe integrieren. Dies sind die Regeln, die ich bisher habe zur Erzeugung des TS und QM-Dateien:Wie integriert man Qt4 qm-Dateien mit CMake und QRC in Binärdateien?
set(myapp_TRANSLATIONS
i18n/myapp_de.ts
)
set(FILES_TO_TRANSLATE
${myapp_SRCS}
${myapp_MOC_HDRS}
)
QT4_CREATE_TRANSLATION(QM_FILES ${FILES_TO_TRANSLATE} ${myapp_TRANSLATIONS})
QT4_ADD_TRANSLATION(QM ${myapp_TRANSLATIONS})
Ich habe versucht, die im Anschluss an die QM-Dateien in der ausführbaren Datei hinzuzufügen:
add_executable(myapp ${myapp_SRCS} ${myapp_MOC_SRCS} ${myapp_RCC_SRCS} ${QM})
Dies ist die Initialisierung von Haupt. cav:
QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
QTranslator appTranslator;
appTranslator.load("myapp_" + QLocale::system().name());
app.installTranslator(&appTranslator);
Allerdings zeigt strings mypp
, dass die Übersetzungen nicht in die binären gehen.
Update: Ich habe jede qm-Datei in ein i18n/translations.qrc
:
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/resources">
<file>myapp_de.qm</file>
<file> ... .qm</file>
</qresource>
</RCC>
und
QT4_ADD_RESOURCES(myapp_QM_RCC_SRCS i18n/translations.qrc)
und das Hinzufügen von myapp_QM_RCC_SRCS
zu den ausführbaren Abhängigkeiten verwenden.
Aber das scheitert während der Bauzeit dank der Tatsache, dass CMake einen Schatten baut (außerhalb des Quellverzeichnisses), aber die QRC-Dateien auf Abhängigkeiten analysiert und die referenzierten Dateien relativ zur QRC-Datei erwartet (nettes Feature, aber kein make Regel, wie die QM-Datei an diesem Ort erstellt wird. Die QM-Dateien befinden sich in ${CMAKE_CURRENT_BINARY_DIR}
(wo sie mit Shadowbuilding zusammenhängen), erwarten aber in ${CMAKE_CURRENT_SOURCE_DIR}
(wo nicht generierte Dateien sein sollten - also wären beide Standorte je nach Situation korrekt).
Sieht vielversprechend aus, ich werde es versuchen. +1 – hurikhan77
Ich habe Ihre Idee von Anfang an Schritt für Schritt aufgebaut, um zu lernen, wie Sie es gemacht haben. Funktioniert perfekt. – hurikhan77
Fest! Arbeitete wie ein Charme – Claudiu