c++ QT中cmake项目,直接在cmakelist中添加翻译设置

在cmakelist中添加下列代码

方法一、

复制代码
set(TS_FILES
   ${CMAKE_CURRENT_SOURCE_DIR}/OCCQt_zh_CN.ts
)

find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)

foreach(_chinese_file ${TS_FILES})

    execute_process(
        COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${_chinese_file})
    execute_process(
        COMMAND ${LRELEASE_EXECUTABLE} ${_chinese_file})
    execute_process(COMMAND ${CMAKE_COMMAND} -E copy 
${CMAKE_CURRENT_SOURCE_DIR}/OCCQt_zh_CN.qm translations/)

endforeach()

第一个execute_process是生成.ts,第二个execute_process是生成.qm,第三个execute_process是复制.qm到执行目录。

进行cmake,生成的.qm文件就可以在项目中使用:

复制代码
    QTranslator translator;
    translator.load(":/translations/OCCQt_zh_CN.qm", app.applicationDirPath());
    app.installTranslator(&translator)

方法二、

复制代码
set(TS_DIR "${CMAKE_CURRENT_SOURCE_DIR}")

set(languages
    chinese
    traditional
)
set(files ${files} resources/resources.qrc)
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" FILES ${files})
find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)
foreach(_lan ${languages})
    set(_ts_file "${TS_DIR}/${PROJECT_NAME}_${_lan}.ts")
     execute_process(
       COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR}/srcs -ts ${_ts_file})
           execute_process(
        COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file}
    )
        execute_process(
        COMMAND ${CMAKE_COMMAND} -E copy ${TS_DIR}/${PROJECT_NAME}_${_lan}.qm translations/
    )
endforeach()
相关推荐
劲镝丶1 小时前
malloc概述
c语言·开发语言·c++
努力努力再努力wz2 小时前
【C++进阶系列】:万字详解红黑树(附模拟实现的源码)
java·linux·运维·c语言·开发语言·c++
cccyi72 小时前
C/C++类型转换
c++
枫fengw2 小时前
9.8 C++
开发语言·c++
JCBP_3 小时前
QT(3)
开发语言·汇编·c++·qt·算法
XFF不秃头3 小时前
力扣刷题笔记-三数之和
c++·笔记·算法·leetcode
滴滴滴嘟嘟嘟.3 小时前
Qt信号与槽机制
开发语言·qt
Pafey3 小时前
VS2022 + Qt5.9 中文乱码/项目设置utf-8编码
c++·qt·中文乱码
minji...3 小时前
C++ STL之list的使用
开发语言·c++
青草地溪水旁4 小时前
23 种设计模式
开发语言·c++·设计模式