mirror of
https://github.com/barry-ran/QtScrcpy.git
synced 2025-04-20 03:25:02 +00:00
chore: remove cmake translate
This commit is contained in:
parent
f37fd6e789
commit
f190f9b17d
2 changed files with 52 additions and 10 deletions
|
@ -79,8 +79,8 @@ set(CMAKE_AUTOUIC ON)
|
|||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Network LinguistTools REQUIRED)
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network LinguistTools REQUIRED)
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Network REQUIRED)
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Network REQUIRED)
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS X11Extras REQUIRED)
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS X11Extras REQUIRED)
|
||||
|
@ -187,14 +187,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|||
)
|
||||
endif()
|
||||
|
||||
# 使用qt5_add_translation 根据已有ts文件生成qm文件,不用qt5_create_translation
|
||||
# 感兴趣可以了解下qt5_create_translation用法 https://www.cnblogs.com/apocelipes/p/14355460.html
|
||||
set(QC_TS_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/res/i18n/zh_CN.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/res/i18n/en_US.ts
|
||||
)
|
||||
set_source_files_properties(${QC_TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/res/i18n")
|
||||
qt5_add_translation(QC_QM_FILES ${QC_TS_FILES})
|
||||
# 翻译相关(使用shell脚本替代cmake处理翻译)
|
||||
# add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/res/i18n)
|
||||
|
||||
# all sources
|
||||
set(QC_PROJECT_SOURCES
|
||||
|
|
48
QtScrcpy/res/i18n/CMakeLists.txt
Normal file
48
QtScrcpy/res/i18n/CMakeLists.txt
Normal file
|
@ -0,0 +1,48 @@
|
|||
# 声明ts文件
|
||||
set(QC_TS_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/zh_CN.ts
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/en_US.ts
|
||||
)
|
||||
# 设置qm文件生成目录
|
||||
set_source_files_properties(${QC_TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
# 引入LinguistTools
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS LinguistTools REQUIRED)
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS LinguistTools REQUIRED)
|
||||
|
||||
# qt5_create_translation会依次执行 lupdate更新ts、lrelease更新qm
|
||||
qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../.. ${QC_TS_FILES})
|
||||
# 自定义目标依赖QM_FILES,否则不会生成qm文件
|
||||
add_custom_target(QC_QM_GENERATOR DEPENDS ${QM_FILES})
|
||||
|
||||
# qt5_create_translation的bug:cmake clean的时候会删除翻译好的ts文件,导致翻译丢失
|
||||
# (qt官方说qt6没问题,只用qt6的可以考虑qt5_create_translation)
|
||||
# 网上查到的CLEAN_NO_CUSTOM办法只能在makefile生成器下生效,解决不了问题
|
||||
# https://cmake.org/cmake/help/latest/prop_dir/CLEAN_NO_CUSTOM.html
|
||||
# set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true)
|
||||
# 目前唯一的解决办法是每次clean后,都手动在git中恢复一下ts文件
|
||||
|
||||
#[[
|
||||
总结:
|
||||
cmake qt项目下,利用cmake脚本有三种方式处理翻译:
|
||||
1. 完全使用qt自带的cmake LinguistTools脚本:qt5_create_translation&qt5_add_translation
|
||||
这两个脚本都满足不了需求:
|
||||
qt5_add_translation只能根据已有ts文件生成qm文件(lrelease),不能更新ts文件(lupdate)
|
||||
qt5_create_translation在cmake clean的时候会删除翻译好的ts文件,导致翻译丢失
|
||||
|
||||
2. cmake add_custom_command + cmake LinguistTools脚本(其实qt5_create_translation内部使用的也是add_custom_command)
|
||||
例如add_custom_command执行lupdate,配合qt5_add_translation更新qm,
|
||||
参考:https://github.com/maratnek/QtFirstProgrammCMake/blob/2c93b59e2ba85ff6ee0e727487e14003381687d3/CMakeLists.txt
|
||||
|
||||
3. 完全使用cmake命令来执行lupdate和lrelease
|
||||
例如add_custom_command/add_custom_target/execute_process都可以实现执行lupdate和lrelease命令
|
||||
|
||||
上面3个方案都有一个共同问题:就是翻译文件处理都是和编译绑定在一起的,每次编译都会检测执行,实际的翻译工作是所有
|
||||
编程工作都完成以后,统一执行一次lupdate、翻译、lrelease就可以了,不应该和编译绑定在一起
|
||||
所以写两个shell脚本lupdate.sh和lrelease.sh来处理比较合适
|
||||
|
||||
参考文档
|
||||
1. qt知道qt5_create_translation的bug,但是不肯解决,只确定了qt6没问题 https://bugreports.qt.io/browse/QTBUG-96549
|
||||
2. https://doc.qt.io/qt-5/qtlinguist-cmake-qt5-add-translation.html
|
||||
3. https://doc.qt.io/qt-5/qtlinguist-cmake-qt5-create-translation.html
|
||||
4. execute_process 参考:https://blog.csdn.net/u010255072/article/details/120326833
|
||||
5. add_custom_target 参考:https://www.cnblogs.com/apocelipes/p/14355460.html
|
Loading…
Add table
Reference in a new issue