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()
相关推荐
minji...1 分钟前
Linux 线程同步与互斥(六) 线程安全与重入问题,死锁,线程done
linux·运维·开发语言·数据库·c++·算法·安全
yuanyuan2o23 分钟前
GDB 调试指南
c语言·c++·算法
cpp_25012 小时前
P1024 [NOIP 2001 提高组] 一元三次方程求解
数据结构·c++·算法·题解·二分答案·洛谷·csp
张健115640964811 小时前
使用信号量限制并发数量
开发语言·c++
jc062011 小时前
6.1云原生之Docker
c++·docker·云原生
叶子野格14 小时前
《C语言学习:指针》12
c语言·开发语言·c++·学习·visual studio
Fuyo_111914 小时前
C++ 内存管理
c++·笔记
澈20715 小时前
C++面向对象:类与对象核心解析
c++·算法
小短腿的代码世界15 小时前
Qt跨进程通信在交易系统中的应用:让策略引擎与风控模块在毫秒级握手
开发语言·qt
6Hzlia15 小时前
【Hot 100 刷题计划】 LeetCode 141. 环形链表 | C++ 哈希表直觉解法
c++·leetcode·链表