前言我们在上节课中简单了解了一下Qt,那么本节课我们将学习环境搭建,目前最新发布的版本是5.14.2(2020-04-30),5.15.0版本刚发布第四版测试版(Qt 5.15.0-beta4),也就不建议大家先行躺雷了,本篇文章学会了大家也可以自行编译最新版本,所以本系列教程是基于5.14.2这个版本进行的,相比于5.14版本的改动并没有带来很多特性上的改变,仅仅是修复了很多Bug,所以我们要查看5.14.2版本的新特性,直接看5.14版本的发布说明即可。5.14版本发布说明:https://www.qt.io/blog/qt-5.14-has-released 本系列教程我们采用的方式是直接在树莓派上开发,意思就是我们直接在树莓派上编写代码,编译代码,运行代码,所有的工作全部放在树莓派上完成的,也就是你只要有一台树莓派就可以完成所有的学习。 硬件要求
下载源码由于5.14版本并不能直接使用apt-get方式去安装,所以我们需要从源码安装,当然这一过程还是非常耗时的(请做好心理准备...),使用apt-get方式安装的Qt版本大约在5.11上,可以看出还是有几个版本的距离,那么废话少说,我们先将源码下载下来:Qt 5.14.2 源码下载:http://download.qt.io/archive/qt/5.14/5.14.2/single/qt-everywhere-src-5.14.2.tar.xz 我们既然要安装最新的Qt版本,那么一并也将最新版本的Qt Creator安装了吧,编译过程同样相当耗时。 Qt Creator 源码下载:https://download.qt.io/official_releases/qtcreator/4.12/4.12.0/qt-creator-opensource-src-4.12.0.tar.gz 编译 Qt5.14.2我们这里需要先编译Qt 5.14.2,然后再编译Qt Creator,因为Qt Creator其实是用Qt写的,所以只有我们把Qt编译好了,才可以去编译Qt Creator。交换空间增大~ $ sudo nano /etc/dphys-swapfile 将CON_SWAPSIZE=100修改为CON_SWAPSIZE=1024 然后执行下面的命令: ~ $ sudo /etc/init.d/dphys-swapfile stop ~ $ sudo /etc/init.d/dphys-swapfile start 安装依赖~ $ sudo apt-get build-dep qt4-x11 ~ $ sudo apt-get build-dep libqt5gui5 ~ $ sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 libclipper-dev 解压源码~ $ tar -xvf qt-everywhere-src-5.14.2.tar.xz 新建文件夹用来编译(影子编译)~ $ mkdir build ~ $ cd build 下载树莓派的编译配置文件
放到Qt的源代码中。具体为: common/raspberrypi.conf 放到 /qtbase/mkspecs/common/ linux-rpi2-g++ , linux-rpi3-g++ , linux-rpi-g++ , linux-rpi-vc4-g++ , linux-rpi4-v3d-g++ 这4个文件夹放到 /qtbase/mkspecs/中 配置编译选项build $ PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig \ ../qt-everywhere-src-5.14.2/configure -platform linux-rpi4-v3d-g++ \ -D__ARM_ARCH_5TEJ__ \ -v \ -opengl es2 -eglfs \ -no-gtk \ -opensource -confirm-license -release \ -reduce-exports \ -force-pkg-config \ -nomake examples -no-compile-examples \ -skip qtwayland \ -skip qtwebengine \ -no-feature-geoservices_mapboxgl \ -qt-pcre \ -no-pch \ -ssl \ -evdev \ -system-freetype \ -fontconfig \ -glib \ -prefix /opt/Qt5.14 \ -qpa eglfs \ -qt-xcb 注意:大家的树莓派版本可能不一样,如果是4B,则选择linux-rpi4-v3d-g++ 编译,如果是3B,则选择linux-rpi3-g++ 编译,以此类推。如果没有错误,会出现跟下面的图片基本一致: 这里的编译选项大家先不用理解,跟上面保持一致即可。 编译配置完成后,我们就可以开始编译了,这里强烈建议将树莓派放到不碍事的地方,因为编译非常耗时,中断会浪费很多时间,然后最好可以配一个散热风扇,实测不加散热风扇并启用多核编译的话CPU温度最高能达到60摄氏度。 build $ make #没有散热风扇,不启用多核编译 build $ make -j4 #有散热风扇可以考虑使用这条命令 编译完成后应该会跟下面的图片基本一致: 不过先不要着急,我在实际测试的时候还需要单独编译三个模块,不然后面安装会报错 build $ cd qtlocation/src/3rdparty/clip2tri clip2tri $ sudo make clip2tri $ cd qtlocation/src/3rdparty/clipper clipper $ sudo make clipper $ cd qtlocation/src/3rdparty/poly2tri poly2tri $ sudo make poly2tri $ cd ~/build 这里具体为什么需要单独编译,我也不是很清楚,可能是前面配置的问题,但是可配置选项非常多,我也没有太仔细的研究,大家感兴趣的可以看一下。 安装安装就相对简单了,我们只需要执行下面的命令即可,不过时间也稍微长一点,大家耐心等候即可: build $ sudo make install 安装完成后我们测试下qmake是否可用: build $ /opt/Qt5.14/bin/qmake -v 如果没有错误的话就应该可以看见跟下面一样的输出了: QMake version 3.1 Using Qt version 5.14.2 in /opt/Qt5.14/lib 将Qt 5.14.2 设置为默认的Qt 版本build $ sudo nano /usr/share/qtchooser/qt5.14-compile-byself.conf 将下面两行代码保存到文件中: /opt/Qt5.14/bin /opt/Qt5.14/lib 然后修改下**.bashrc**文件 build $ nano ~/.bashrc 在文件的最后增加下面一行内容: export QT_SELECT=qt5.14-compile-byself 最后我们使设置生效: build $ source ~/.bashrc 然后我们再测试一下,直接测试qmake,不带路径,看看能不能够正确输出: build $ qmake -v 如果可以正确输出Qt版本,恭喜你,到这一步就完成了! 编译Qt Creator 4.12我们再前面已经成功将Qt编译好了,那么接下来我们编译一下Qt Creator,可能有人不晓得这是什么,简单来说这是一个Qt的IDE,功能非常强大,开发Qt必备之良药,当然项目本身就是Qt编写的,大家通过这个工具也能够从侧面看出Qt的强大了,那么废话少说,我们开始编译吧!解压源码~ $ tar -xvf qt-creator-opensource-src-4.12.0.tar.xz 新建文件夹用来编译(影子编译)~ $ mkdir qtcreator-build ~ $ cd qtcreator-build 编译编译倒是没那么复杂,不过也是一个非常耗时的过程,大约得五六个小时左右... 依次执行下面的命令即可: qtcreator-build $ qmake -r ../qt-creator-opensource-src-4.12.0 qtcreator-build $ make -j4 #如果树莓派没有任何散热方式,不建议追加 -j4 接下来就是漫长的等待,只要你上面Qt编译没错并安装成功后,这里基本不会有问题,你需要的只有等待一下。 安装qtcreator-build $ make install 安装完成后有点小Bug,就是我们没法在快捷启动里找到Qt Creator,不过没关系,我们只需要复制一个文件就可以了。 qtcreator-build $ sudo cp /share/applications/org.qt-project.qtcreator.desktop /usr/share/applications/ 我猜测是快捷启动没有索引这个目录,不过没仔细研究,我们复制到那个文件下就可以从快捷启动中使用了。 测试到上一步,我们就已经将Qt和Qt Creator都安装好了,我们这里编译一个官方例程来测试一下! ~ $ cp qt-everywhere-src-5.14.2/qtbase/examples/opengl/2dpainting/ ./ -r 然后我们用Qt Creator,根据下面的步骤打开我们的测试例程: 编译稍微有点慢,请耐心等候一会。 运行结果: 恭喜你,到这里你已经成功将开发环境搭建好了!!! |