我想*.qm
使用. 所有文件都使用/ /etc 约定命名。但是产生输出,只使用 basename 直到 first ,而不是最后一个。*.ts
qt5_add_translation
*.ts
*.de_DE.ts
*.fr_FR.ts
qt5_add_translation
.
不可能将选项传递给lrelease
使用qt5_add_translation(QM_FILES "${PROJECT_NAME}.de_DE.ts" OPTIONS -qm "${PROJECT_NAME}.de_DE.qm")
语法。
源文件的设置OUTPUT_NAME
属性*.ts
也不起作用:
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
文件的生成名称?
当然,我可以制作自定义命令并将其用于我的目的,但我更喜欢使用 ready qt5_add_translation
。
编辑:
看着/usr/local/Qt-5.9.2/lib/cmake/Qt5LinguistTools/Qt5LinguistToolsMacros.cmake
我得出的结论,没有办法实现使用 ready to use 的期望qt5_add_translation
,因为 usingget_filename_component(qm ${_abs_FILE} NAME_WE)
获取文件名:
NAME_WE = 没有目录或最长扩展名的文件名
出于我的目的,需要使用组合(以获取带完整后缀的文件名),然后结合ABSOLUTE
应用多次以提取不带最短扩展名的文件名。EXT
NAME_WE