qt_create_translation未更新.ts文件也未生成.qm文件问题
问题原因与解决方案
核心原因
你的qt_create_translation调用参数格式错误,CMake无法正确识别要更新的TS文件和扫描的源文件,导致lupdate(提取翻译字符串)和lrelease(生成QM文件)两个步骤都没有被正确触发。
修正步骤
修改CMakeLists.txt中的翻译相关代码,使用CMake关键字明确区分源文件和TS文件,并将生成的QM文件关联到可执行目标:
find_package(Qt6 REQUIRED LinguistTools) # 正确配置翻译提取与QM生成 qt_create_translation(QM_FILES SOURCE_FILES ${PROJECT_SOURCE_DIR}/main.cpp # 指定要扫描的源文件,也可用${PROJECT_SOURCE_DIR}扫描整个目录 TS_FILES ${PROJECT_SOURCE_DIR}/translation_ru.ts ) # 将QM文件添加到目标依赖,确保构建时自动生成 target_sources(TestQtWidgetsProject PRIVATE ${QM_FILES})
额外说明
- 更新TS文件:运行构建后,lupdate会自动扫描指定的源文件,提取
QApplication::tr包裹的字符串并写入translation_ru.ts,无需手动编辑TS文件内容。 - 触发手动更新:如果需要单独更新TS文件而不构建整个项目,可以执行CMake的
update_translations目标(例如终端运行make update_translations,或在IDE中找到该目标执行)。 - 扫描目录范围:若要扫描整个项目目录的源文件,将
${PROJECT_SOURCE_DIR}/main.cpp替换为${PROJECT_SOURCE_DIR}即可,CMake会自动遍历目录下的相关源文件。
内容的提问来源于stack exchange,提问作者AvidCoder
相关产品推荐
相关产品推荐

