Bir Qt4 CMake projem var ve i18n için QM dosyalarını çıktı ikili sistemine entegre etmek istiyorum. Bunlar şimdiye kadar TS ve QM dosyaları üretmek için ben kurallar şunlardır: Qt4 qm dosyalarını cmake ve QRC kullanarak nasıl ikili hale getirilir?
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})
Ben yürütülebilir QM dosyaları eklemek için aşağıdaki çalıştı:
add_executable(myapp ${myapp_SRCS} ${myapp_MOC_SRCS} ${myapp_RCC_SRCS} ${QM})
Bu ana den başlatma olduğunu. 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);
Ancak strings mypp
çeviriler ikili girecek olmadığını gösterir.
Güncelleme
: Beni18n/translations.qrc
her qm dosyasını ekledi:
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/resources">
<file>myapp_de.qm</file>
<file> ... .qm</file>
</qresource>
</RCC>
ve
QT4_ADD_RESOURCES(myapp_QM_RCC_SRCS i18n/translations.qrc)
kullanarak ve yürütülebilir bağımlılıkları için myapp_QM_RCC_SRCS
ekledi.
Ancak bu, CMake'in bir gölge oluşturması (kaynak dizininin dışında bina) yapması, ancak QRC dosyalarını QRC dosyasına göre başvurulan dosyaları beklerken bağımlılıkları için ayrıştırması sayesinde yapılama süresi boyunca başarısız olur (güzel özellik ancak yapamazsınız) QM dosyasını bu konumda nasıl kuracağınızı yönetin). QM dosyaları ${CMAKE_CURRENT_BINARY_DIR}
(burada gölge oluşturma kullanılarak aittir) içinde bulunur, ancak ${CMAKE_CURRENT_SOURCE_DIR}
'da (üretilmemiş dosyaların olması gerektiği yerde) bekler - böylece her iki konum da duruma bağlı olarak doğru olur.
Umut verici görünüyor, bunu deneyeceğim. +1 – hurikhan77
Nasıl yaptığınızı öğrenmek için fikrinizi adım adım oluşturdunuz. Mükemmel çalışıyor. – hurikhan77
Katı! Bir çekicilik gibi çalıştı – Claudiu