使用CMake链接基本Qt5应用程序的错误

时间:2016-06-15 09:56:47

标签: cmake qt5

我正在尝试使用CMake构建一个简单的Qt5应用程序 Qt5项目是使用Widget创建新项目时生成的基本项目。 该项目使用QtCreator成功构建并运行 widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

的main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

CMakeLists文件是根据Qt5文档中给出的示例编写的。 Qt5目录的路径在缓存中给出。 http://doc.qt.io/qt-5/cmake-manual.html

的CMakeLists.txt

cmake_minimum_required(VERSION 2.8.11)

project(test0)

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

# Find the QtWidgets library
find_package(Qt5Widgets)

# Tell CMake to create the executable
add_executable(test0 WIN32 main.cpp)

# Use the Widgets module from Qt 5.
target_link_libraries(test0 Qt5::Widgets)

Cmake一代很好。

在使用Cmake生成的Makfile构建应用程序时,我收到链接错误(未定义的属于Widget类的方法的引用)。 (这里是错误的捕获) http://s31.postimg.org/edefl1m6j/Capturetest0.png

任何提示?

系统: Windows 7

编译器: MINGW32

版本 QT 5.6.1(mingw49_32) CMake 3.6.0

1 个答案:

答案 0 :(得分:0)

CMakeLists中的两个错误 - 如Tsyvarev所述,必须在add_executable中提及widget.cpp - 使用autouic创建与widget.ui和widget.cpp相关联的ui_widget.h

工作的CMakeLists如下:

(function () {
    'use strict';

    angular.module('app', [
        'config'
    ])
    .config(configuration);

    configuration.$inject = ['ConfigProvider'];

    function configuration(ConfigProvider) {
        ConfigProvider.setFoo(86400);
    }
})();