首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt CMake创建qm文件

Qt CMake创建qm文件
EN

Stack Overflow用户
提问于 2022-05-15 16:42:23
回答 1查看 213关注 0票数 1

我在创建/更新qt翻译文件(ts->qm)时遇到了一些问题。

谈到CMake,我绝对是个菜鸟。为了解决这个问题,我已经在google上搜索过了,但是它根本不起作用,而且还有另外一个问题: CMake删除.ts文件,我需要一次又一次地从备份中复制它们。这是真正的阿诺伊。无论如何,这里是我的CMake文件:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.12)

project(MarkdownEdit VERSION 1.2.0 LANGUAGES CXX C)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_SOURCE_DIR}/ui)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_compile_definitions(APP_VERSION="${PROJECT_VERSION}" QT_DISABLE_DEPRECATED_BEFORE=0x051208)

find_package(PkgConfig)
PKG_CHECK_MODULES(ENCHANT REQUIRED enchant-2)
include_directories(${ENCHANT_INCLUDE_DIRS})

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools PrintSupport)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools PrintSupport)

set(TS_FILES translations/MarkdownEdit_de.ts)
set(RC_FILES ressources/ressources.qrc)
set(3RDPARTY_FILES
        3rdparty/md4c/src/entity.h
        3rdparty/md4c/src/entity.c
        3rdparty/md4c/src/md4c.h
        3rdparty/md4c/src/md4c.c
        3rdparty/md4c/src/md4c-html.h
        3rdparty/md4c/src/md4c-html.c
        3rdparty/qmarkdowntextedit/markdownhighlighter.h
        3rdparty/qmarkdowntextedit/markdownhighlighter.cpp
        3rdparty/qmarkdowntextedit/linenumberarea.h
        3rdparty/qmarkdowntextedit/qmarkdowntextedit.h
        3rdparty/qmarkdowntextedit/qmarkdowntextedit.cpp
        3rdparty/qmarkdowntextedit/qownlanguagedata.h
        3rdparty/qmarkdowntextedit/qownlanguagedata.cpp
        3rdparty/qmarkdowntextedit/qplaintexteditsearchwidget.h
        3rdparty/qmarkdowntextedit/qplaintexteditsearchwidget.ui
        3rdparty/qmarkdowntextedit/qplaintexteditsearchwidget.cpp
        3rdparty/qmarkdowntextedit/media.qrc
)

set(PROJECT_SOURCES
        src/main.cpp
        src/mainwindow.cpp
        src/mainwindow.h
        src/about.cpp
        src/about.h
        src/parser.cpp
        src/parser.h
        src/highlighter.cpp
        src/highlighter.h
        src/spellchecker.cpp
        src/spellchecker.h
        ui/mainwindow.ui
        ${3RDPARTY_FILES}
        ${RC_FILES}
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR}/translations ${TS_FILES})

    qt_add_executable(MarkdownEdit
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
        ${QM_FILES}
    )
else()
    qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR}/translations ${TS_FILES})

    if(ANDROID)
        add_library(MarkdownEdit SHARED
            ${PROJECT_SOURCES}
            ${QM_FILES}
        )
    else()
        add_executable(MarkdownEdit
            ${PROJECT_SOURCES}
            ${QM_FILES}
        )
    endif()
endif()

IF(WIN32)
    SET(INTL_LDFLAGS -lintl)
ENDIF(WIN32)

include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_SOURCE_DIR}/3rdparty/qmarkdowntextedit)
include_directories(${CMAKE_SOURCE_DIR}/3rdparty/md4c/src)
target_link_libraries(MarkdownEdit PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::PrintSupport ${ENCHANT_LDFLAGS} ${INTL_LDFLAGS})

set_target_properties(MarkdownEdit PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(MarkdownEdit)
endif()

如果我们能解决这个问题,我会很高兴的。提前谢谢,祝您今天愉快。

EN

回答 1

Stack Overflow用户

发布于 2022-10-18 08:49:54

还有一个问题: CMake删除.ts文件,我需要一次又一次地从备份中复制它们。这是真正的阿诺伊。

您使用哪种版本的QT?Qt有5.15.6和6.2版本的臭虫:TS文件在清理时被删除。它已在Qt 5.15.9和6.3中固定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72250269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档