如何在CMake中添加QSerialPort模块?

5
我希望将QSerialPort模块添加到CMake中。据我所知,我需要在*.pro文件中添加QT += serialport。我只想使用CMake。因此,我尝试使用简单的CMake文件进行编译,但是出错了。QtCore工作正常,因为qDebug可以正常显示。
我得到的错误信息是:
undefined reference to `QSerialPort::QSerialPort(QObject*)'
undefined reference to `QSerialPort::~QSerialPort()'
undefined reference to `QSerialPort::~QSerialPort()'

这是一个简单的main.cpp文件。

#include <iostream>
#include <QObject>
#include <QDebug>
#include <QCoreApplication>
#include <QtSerialPort/QSerialPort>

using namespace std;

int main() {
    QSerialPort serialPort; //this line gives error
    qDebug()<<"Hello Qt"; //this line is working as normal
    cout << "Hello, World!" << endl;
    return 0;
}

这是一个简单的CMake文件。
cmake_minimum_required(VERSION 3.3)
project(untitled1)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

find_package(Qt5Core  COMPONENTS Qt5SerialPort REQUIRED)

set(SOURCE_FILES main.cpp)
add_executable(untitled1 ${SOURCE_FILES})
qt5_use_modules(untitled1 Core)

4
使用命令qt5_use_modules(untitled1 Core)将你的可执行文件链接到QT Core库,但是你也使用了SerialPort库。请改用命令qt5_use_modules(untitled1 Core SerialPort) - Tsyvarev
1个回答

7

感谢 @tsyvarev。你的建议解决了这个问题。为了方便其他人参考,我回帖上传了这些有效的文件。

简单的 main.cpp 文件:

#include <iostream>
#include <QObject>
#include <QDebug>
#include <QCoreApplication>
#include <QtSerialPort>

using namespace std;

int main() {
    QSerialPort serialPort;
    serialPort.setPortName("ttyACM1");
    qDebug()<<"Hello Qt";
    cout << "Hello, World!" << endl;
    return 0;
}

这是一个简单的 CMake 文件:

cmake_minimum_required(VERSION 3.3)
project(untitled1)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

find_package(Qt5Core REQUIRED)

set(SOURCE_FILES main.cpp)
add_executable(untitled1 ${SOURCE_FILES})
qt5_use_modules(untitled1 Core SerialPort)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接