2015-12-07 4 views
2

Я хочу добавить модуль QSerialPort в CMake. По моему мнению, мне нужно добавить QT + = serialport в * .pro. Я только хочу использовать CMake. Поэтому я пытаюсь выполнить простой файл CMake для компиляции, но у него есть ошибка. QtCore работает, поскольку qDebug может отображаться без каких-либо проблем.Как добавить модуль QSerialPort в CMake?

Ошибка я получаю:

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) 
+3

Команда 'qt5_use_modules (Untitled1 ядро)' связать свой исполняемый файл с библиотекой QT 'Core', но вы используете Библиотека SerivalPort. Вместо этого используйте команду 'qt5_use_modules (untitled1 Core SerialPort)'. – Tsyvarev

ответ

2

Thank you @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) 
Смежные вопросы