繁体   English   中英

qmake 和生成的 qm 文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM