[英]qmake and generated qm files
将编译后的翻译 (*.qm) 组织到资源中的最佳(正确)方法是什么? *.qm 文件在 qrc 文件中引用并由两(三)个额外目标以这种方式生成:
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
}
但问题是在 qmake 第一次运行时,还没有生成 qm 文件,并且 make 打印如下错误:
RCC: Error in 'qml.qrc': Cannot find file ...
我不喜欢将编译的 qm 文件保存到 VSC 的想法。
有没有办法很好地组织它?
我想指出我在一些项目中使用的解决方案。 它可能远非完美,但效果很好。
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
因为不同的构建(发布和调试)产生不同的有可能是一个sensful的调整,以lupdate选项*.ts
文件,然后触发在使用VCS的变化。
我也喜欢将受过指导的读者引向专家使用它的示例。
推荐的方法——在最初提出这个问题时可能没有可用的方法是使用
TRANSLATIONS += <your *.ts files>
CONFIG += lrelease embed_translations
如果您真的需要/想要单独构建 qm 文件,我会指出 qmake 对上述配置的作用并根据您的需要进行调整。 请参阅https://github.com/qt/qtbase/blob/5.15.2/mkspecs/features/lrelease.prf (基本上,它会创建资源列表并将其添加到RESOURCES
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.