我想用cmake(2.8.12)构建一个基本的qt5项目,用于qtcreator的测试目的。该项目只是一个QApplication,其中包含一个带有单个按钮的主对话框。我按照qt.org和之前的堆栈上的说明进行操作 讨论最终得出以下cmake文件:
cmake_minimum_required(VERSION 2.8.11)
project(test)
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Widgets REQUIRED)
add_executable(test WIN32 main.cpp)
target_link_libraries(test Qt5::Widgets)
构建运行良好,直到我收到以下错误的链接阶段:
main.cpp:(.text+0x36): undefined reference to `MainWindow::MainWindow(QWidget*)'
main.cpp:(.text+0x55): undefined reference to `MainWindow::~MainWindow()'
main.cpp:(.text+0x74): undefined reference to `MainWindow::~MainWindow()'
据我从qt.org的说明理解,我不认为 我错过了设置我的cmake文件的任何步骤。您是否知道该代码有什么问题?
编辑:
最后,我的cmake文件如何工作:
cmake_minimum_required(VERSION 2.8.11)
project(test)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Widgets REQUIRED)
qt5_wrap_ui(test_ui mainwindow.ui)
add_executable(test WIN32 main.cpp mainwindow.cpp ${test_ui})
target_link_libraries(test Qt5::Widgets)
感谢
答案 0 :(得分:1)
您错过了MainWindow
的源文件,可能保存在名为MainWindow.cpp
的本地文件中。示例是否使用QMainWindow
?这可能是错过的,因为现在您正在使用QMainWindow
的自定义子类。
将cmake行修改为:
add_executable(test WIN32 main.cpp MainWindow.cpp)