J'ai un projet Qt4 CMake et je voudrais intégrer les fichiers QM pour i18n dans le binaire de sortie. Ce sont les règles que je jusqu'à présent pour générer les fichiers TS et QM:Comment intégrer les fichiers qm Qt4 en binaire en utilisant cmake et QRC?
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})
J'ai essayé les éléments suivants pour ajouter les fichiers QM à l'exécutable:
add_executable(myapp ${myapp_SRCS} ${myapp_MOC_SRCS} ${myapp_RCC_SRCS} ${QM})
C'est l'initialisation de la principale. cpp:
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);
Cependant, strings mypp
montre que les traductions ne vont pas dans le binaire.
Mise à jour: j'ajouté chaque fichier qm à un i18n/translations.qrc
:
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/resources">
<file>myapp_de.qm</file>
<file> ... .qm</file>
</qresource>
</RCC>
et en utilisant
QT4_ADD_RESOURCES(myapp_QM_RCC_SRCS i18n/translations.qrc)
et en ajoutant myapp_QM_RCC_SRCS
aux dépendances exécutables.
Mais cela échoue pendant la compilation du fait que CMake fait une construction d'ombre (construction en dehors du répertoire source) mais analyse les fichiers QRC pour les dépendances en attendant les fichiers référencés par rapport au fichier QRC (fonctionnalité intéressante mais règle comment construire le fichier QM à cet endroit). Les fichiers QM sont dans ${CMAKE_CURRENT_BINARY_DIR}
(où ils appartiennent à l'aide de la construction d'ombre) mais l'attend dans ${CMAKE_CURRENT_SOURCE_DIR}
(où les fichiers non générés devraient être - donc les deux emplacements seraient corrects, selon la situation).
Ça promet, je vais essayer ça. +1 – hurikhan77
J'ai construit votre idée depuis le début, étape par étape, pour apprendre comment vous l'avez fait. Fonctionne parfaitement. – hurikhan77
Solide! Travaillé comme un charme – Claudiu