Этот вопрос был ранее опубликован в сообществе qt: https://forum.qt.io/topic/106930/how-to-run-lupdate-with-a-qmake-config
Я использую такую конструкцию в файлах моего проекта:
LANGUAGES = de
TRANSLATION_NAME = authorization
include(../../gen_translations.pri)
, где gen_translations.pri выглядит так:
# parameters: var, prepend, append
defineReplace(prependAll) {
for(a,$$1):result += $$2$${a}$$3
return($$result)
}
TRANSLATIONS = $$prependAll(LANGUAGES, $$PWD/libs/$$TRANSLATION_NAME/translations/lib$${TRANSLATION_NAME}_, .ts)
TRANSLATIONS_FILES =
qtPrepareTool(LRELEASE, lrelease)
for(tsfile, TRANSLATIONS) {
qmfile = $$shadowed($$tsfile)
qmfile ~= s,.ts$,.qm,
qmdir = $$dirname(qmfile)
!exists($$qmdir) {
mkpath($$qmdir)|error("Aborting.")
}
command = $$LRELEASE -removeidentical $$tsfile -qm $$qmfile
system($$command)|error("Failed to run: $$command")
TRANSLATIONS_FILES += $$qmfile
}
for(qmentry, $$list($$TRANSLATIONS_FILES)) {
qmpath = $$OUT_PWD/../translations
qmpathname = $$replace(qmpath,/,)
qmpathname = $$replace(qmpathname,\.,)
qmpathname = $$replace(qmpathname,:,)
qmpathname = $$replace(qmpathname," ",)
qmentity = qmfiles_$${qmpathname}
eval($${qmentity}.files += $$qmentry)
eval($${qmentity}.path = $$qmpath)
INSTALLS *= $${qmentity}
}
Он генерирует для меня файлы *.qm
и перемещает их в определенное место с помощью make install.
Я не хочу, чтобы qmake
выполнял весь этот материал для каждой сборкина моей развивающейся машине.Поэтому я хочу сделать его условным, обернув его для qmake
:
translate{
LANGUAGES = de
TRANSLATION_NAME = authorization
include(../../gen_translations.pri)
}
Таким образом, я могу решить, когда я хочу получить *.qm
файлы, а когда нет.Но тогда я не могу запустить lupdate
для файла проекта заранее, потому что он заблокирован этим условием.
Я уверен, что у кого-то есть лучшая идея для выполнения задачи.
Заранее спасибо.