我创建了一个小测试项目来展示我的问题:
main.cpp
#include <QApplication>
#include <QPushButton>
int main(int argc, char* argv[]) {
QApplication a(argc, argv);
QPushButton button(QApplication::tr("Hello, World!"), nullptr);
button.resize(200, 100);
button.show();
return QApplication::exec();
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.27)
set(CMAKE_CXX_STANDARD 23)
project(TestQtWidgetsProject)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
add_executable(TestQtWidgetsProject main.cpp)
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
target_link_libraries(TestQtWidgetsProject Qt::Core Qt::Gui Qt::Widgets)
find_package(Qt6 REQUIRED LinguistTools)
qt_create_translation(QM_FILES ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/translation_ru.ts)
我还在项目根目录下创建了一个空文件
translation_ru.ts
。
但是在构建项目后,文件
translation_ru.ts
仍然为空,并且 ${CMAKE_BINARY_DIR}
中没有创建 .qm 文件。为什么?
我仍然没有弄清楚为什么这段代码不起作用,但正如 Alan Birtles 所说,该命令已被弃用,所以这可能就是原因。
这是该项目的工作代码示例:
find_package(Qt6 REQUIRED LinguistTools)
qt_add_translations(TestQtWidgetsProject
INCLUDE_DIRECTORIES
${PROJECT_SOURCE_DIR}
TS_FILES
translation_ru.ts)
add_dependencies(TestQtWidgetsProject update_translations)