链接时出现cmake 2.8.12和qt5错误

时间:2015-03-25 17:06:26

标签: qt cmake

我想用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)

感谢

1 个答案:

答案 0 :(得分:1)

您错过了MainWindow的源文件,可能保存在名为MainWindow.cpp的本地文件中。示例是否使用QMainWindow?这可能是错过的,因为现在您正在使用QMainWindow的自定义子类。

将cmake行修改为:

add_executable(test WIN32 main.cpp MainWindow.cpp)