【发布时间】:2018-05-31 11:37:11
【问题描述】:
我想使用qt5_add_translation 为不同语言的大量*.ts 文件生成大量*.qm。所有*.ts 文件都使用*.de_DE.ts/*.fr_FR.ts/etc 约定命名。但是qt5_add_translation 产生输出,直到第一个.,而不是最后一个。
无法使用qt5_add_translation(QM_FILES "${PROJECT_NAME}.de_DE.ts" OPTIONS -qm "${PROJECT_NAME}.de_DE.qm") 语法将选项传递给lrelease。
同时为源 *.ts 文件设置 OUTPUT_NAME 属性不起作用:
set_source_files_properties(
"${PROJECT_NAME}.de_DE.ts" PROPERTIES
OUTPUT_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}"
OUTPUT_NAME "${PROJECT_NAME}.de_DE.qm"
)
案例中产生的文件名仍然是"${PROJECT_NAME}.qm",而不是"${PROJECT_NAME}.de_DE.qm"
如何覆盖生成的 *.qm 文件的生成名称?
当然,我可以制作自定义命令并将其用于我的目的,但我更喜欢使用准备好的qt5_add_translation。
编辑:
看着/usr/local/Qt-5.9.2/lib/cmake/Qt5LinguistTools/Qt5LinguistToolsMacros.cmake,我得出结论,使用准备使用的qt5_add_translation 无法达到预期,因为使用get_filename_component(qm ${_abs_FILE} NAME_WE) 来获取文件名:
NAME_WE = 没有目录或最长扩展名的文件名
出于我的目的,需要使用 ABSOLUTE 的组合(以获取带有完整后缀的文件名),然后多次应用 EXT 与 NAME_WE 组合以提取不带最短扩展名的文件名。
【问题讨论】:
标签: qt cmake translation qt-linguist