最近入坑QGroundControl,其readme要求Qt版本必须是Qt 5.9.2。那么怎么知道自己的Qt版本呢?
敲入:qmake -v
输出:QMake version 3.0
Using Qt version 5.6.2 in /home/jason/anaconda3/lib
哦,好吧,需要到https://www.qt.io/download-qt-for-application-development安装一个,选择open source。可以直接下载,也可以点击小字“View All Downloads”
我选择直接下载,下载的文件是qt-unified-linux-x64-3.0.2-online.run。这个文件是不能直接运行的,必须用sudo或者chmod +x之后再执行。
一路next,安装之后就可以了,那么这个qt安装到哪里去了呢?/opt/QT/5.9.2这里。
打开Qt creator,打开工程qgroundcontrol中的QGCLocationPlugin,会发现有这么一句:
QT += location-private positioning-private network这个是配置信息,表示用到了Qt的这些个module。是的,Qt还有很多module,介绍在http://doc.qt.io/qt-5/qtmodules.html。
这个location和position都是Qt中module,分别用于:
Qt Location | Displays map, navigation, and place content in a QML application. |
Qt Positioning | Provides access to position, satellite and area monitoring classes. |
如果你直接在Qt creator中构建项目,就会报错,无法找到QtLocation/private/qgeotiledmapreply_p.h等,或者是Project ERROR: Unknown module(s) in QT: positioning-private location-private。为什么,是因为我们没有安装这些模块吗?到opt/QT/5.9.2/gcc_64/include中看一下,发现有啊。那肯定是什么地方没有配置好。
再将鼠标放到其他#include,发现QTimer等其他模块还是指到/usr/include/x86_64-linux-gnu/qt5/QtLocation中,这就确定了我们在安装Qt5.9.2以后没有在qt creator中配置正确。
配置过程:
“工具”->"选项"->Qt Versions->"添加",选择/opt/Qt/5.9.2/gcc_64/bin/qmake。然后再选择“构建套件”标签,点击“手动设置”->"桌面(默认)",选择Qt版本:Qt5.9.2(gcc_64)就可以了。
这时候可能还会报找不到QtLocation/private/qgeotiledmapreply_p.h等错误,这时可以到opt/QT/5.9.2/gcc_64/include中看一下,它们可能在5.9.2的子目录下,把它们手动sudo rm到正确的位置就可以了。