[QT] 解決unknown QT: mqtt 問題

 在使用QT CREATOR開發時,想導入MQTT Module


但QT裡預設沒有MQTT,直接QT += mqtt 會顯示 unknown QT: mqtt


這時就要自己下載並導入到己經建立好的環境


指令

git clone git://code.qt.io/qt/qtmqtt.git

解壓到自己建立好的一個QTMQTT資料夾下

cd qmqtt

../qtmqtt/src/mqtt/

找到qmqttconnection.cpp 這個檔案,並修改內容

connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);

註解掉,並加上

connect(socket, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), this, &QMqttConnection::transportError);

解釋:QAbstractSocket類中沒有errorOccured,都有QAbstractSocket::error,但是QAbstractSocket::error訊號過載,因此要使用功能指向遲接到該訊號,因此需要使用QOverload



執行

git checkout 5.15

記得執行QMAKE時要給與正確的路徑,如果單純執行qmake,依我自己的環境會用../ananconda/下的QMAKE執行,因此我把路徑指到我建立好的qt creator環境下的qmake執行。


sudo /opt/Qt5.14.2/5.14.2/gcc_64/bin/qmake -query QT_INSTALL_LIBS


sudo /opt/Qt5.14.2/5.14.2/gcc_64/bin/qmake

sudo make

sudo make install


這樣就完成了

PS: 如果沒有修改qmqttconnection.cpp這個檔案,在sudo make時會出現以下錯誤喔

/home/username/qtmqtt/src/mqtt/qmqttconnection.cpp:163:39: error: ‘errorOccurred’ is not a member of ‘QAbstractSocket’

163 |     connect(socket, &QAbstractSocket::errorOccurred, this, &QMqttConnection::transportError);

make[2]: *** [Makefile:639: .obj/qmqttconnection.o] Error 1

make[2]: Leaving directory '/home/username/qt-build/src/mqtt'

make[1]: *** [Makefile:47: sub-mqtt-make_first] Error 2

make[1]: Leaving directory '/home/username/qt-build/src'

make: *** [Makefile:49: sub-src-make_first] Error 2


參考 references:

安裝MQTT LIB

https://stackoverflow.com/questions/48701475/qt-creator-adding-mqtt-library/48709563


解決sudo make 時出現在的錯誤

https://www.soinside.com/question/uWmot9dhXJcAxyJgkRD2ZC




留言

熱門文章