diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a8a6d2d0..69a03ccc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -25,11 +25,27 @@ SET( TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translations/Dyt_zh_CN.ts ) + +# 控制是否在构建时自动运行 lupdate 更新 TS 文件。 +# 关闭时仅在 TS 变更后编译生成 QM,避免每次构建都重新创建翻译文件。 +option(UPDATE_TRANSLATIONS "Run lupdate to refresh TS files during build" OFF) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) - qt6_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES}) + if(UPDATE_TRANSLATIONS) + # 运行 lupdate + lrelease:更新 TS 并生成 QM(可能导致每次构建都触发) + qt6_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES}) + else() + # 仅生成 QM,TS 未变化时不重新创建 + qt_add_translations(QM_FILES TS_FILES ${TS_FILES}) + endif() add_custom_target(translations DEPENDS ${QM_FILES}) else() - qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES}) + if(UPDATE_TRANSLATIONS) + # 运行 lupdate + lrelease + qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${TS_FILES}) + else() + # 仅运行 lrelease 生成 QM + qt5_add_translation(QM_FILES ${TS_FILES}) + endif() add_custom_target(translations DEPENDS ${QM_FILES}) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS WinExtras REQUIRED) endif()