我尝试用我的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
1条答案
按热度按时间gojuced71#
我认为问题在于仅仅将${QM_FILES}作为add_executable中的一个源代码并不能迫使CMake理解它需要生成这些文件。我猜这是因为通常情况下不会生成源文件。
您可以通过自定义目标更显式地添加依赖关系。
然后,在
add_executable
行之后,添加以下内容:实际上,这表示存在一个依赖于生成的转换文件的目标,并且您的可执行文件依赖于此目标,因此依赖于转换文件的生成。这应该足以强制调用qt5_create_translation。