CMake不生成.ts文件

qhhrdooz  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(302)

我尝试用我的CMake生成 *.ts文件,但它什么也没做。它甚至不显示任何消息。当我直接用lupdate尝试时,它工作正常,所以我不知道问题可能出在哪里。这里是我的CMakeLists.txt:

cmake_minimum_required(VERSION 3.15 FATAL_ERROR)

project(Band VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(Qt5_DIR "C:/QtOpen/5.13.2/msvc2017_64/lib/cmake/Qt5")

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC_SEARCH_PATHS Designer)    
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

set ( SOURCES
Data/Band.cpp  
MainWindow.cpp
)

set ( MOC_HEADERS 
Data/Band.h
MainWindow.h
)

set ( UIS Designer/band.ui)
set ( RESOURCES application.qrc )

find_package(Qt5 COMPONENTS Core Gui Widgets Xml Network PrintSupport LinguistTools REQUIRED)

qt5_create_translation(QM_FILES MainWindow.cpp english.ts)

add_executable( ${CMAKE_PROJECT_NAME} WIN32 ${SOURCES} ${MOC_HEADERS} ${RESOURCES} ${UIS} ${QM_FILES} icon.rc)
target_compile_definitions(${CMAKE_PROJECT_NAME} PUBLIC DEBUG_MODE)

target_link_libraries(${CMAKE_PROJECT_NAME} Qt5::Widgets Qt5::Gui Qt5::Xml Qt5::PrintSupport)

有人能帮我吗?我已经通过了所有的教程,文档和答案关于这个主题,但没有找到任何可以解释为什么它不生成.ts文件为我。提前感谢。
参考:https://doc.qt.io/qt-5/qtlinguist-cmake-qt5-create-translation.html

gojuced7

gojuced71#

我认为问题在于仅仅将${QM_FILES}作为add_executable中的一个源代码并不能迫使CMake理解它需要生成这些文件。我猜这是因为通常情况下不会生成源文件。
您可以通过自定义目标更显式地添加依赖关系。

add_custom_target(translations DEPENDS ${QM_FILES})

然后,在add_executable行之后,添加以下内容:

add_dependencies(${CMAKE_PROJECT_NAME} translations)

实际上,这表示存在一个依赖于生成的转换文件的目标,并且您的可执行文件依赖于此目标,因此依赖于转换文件的生成。这应该足以强制调用qt5_create_translation。

相关问题