一切有为法,如梦幻泡影,如露亦如电,应作如是观
首先,下载源码qt-everywhere-src-5.10.1,解压,进入解压后的文件夹。下载地址:http://download.qt.io/archive/qt/5.10/5.10.1/single/
安装过程参照解压文件中的README,典型的config(配置), make(编译), install(安装)步骤。
1) ./config
该步骤其作用是生成makefile:让qmake根据目录中的qt.pro来生成makefile文件。qt.pro文件用到了.qtmodules文件。
qt.pro中TEMPLATE = subdirs。(https://blog.csdn.net/qinpanke/article/details/22199271)
运行./configure时,该脚本首先会进入到qtbase目录下,应该是运行qtbase目录下的configure文件。如下图: “creating qmake… ”先生成qmake(可执行文件)。生成了qmake后,才能利用它生成makefile文件哦。
执行config文件时,可以指定一些参数,例如(以下来自README文件):
Some relevant configure options (see configure -help):
-release Compile and link Qt with debugging turned off.
-debug Compile and link Qt with debugging turned on.
-nomake tests Disable building of tests to speed up compilation
-nomake examples Disable building of examples to speed up compilation
-confirm-license Automatically acknowledge the LGPL 2.1 license.
config文件执行结束后,最后显示:
由于执行config时没有指定安装路径,上图提示,默认安装到/usr/local/目录下。 另外,根据其warning,我执行了sudo apt-get install gperf, sudo apt-get install flex
2) 然后根据提示执行make –j 4
该指令执行了大约20h。
3)执行sudo make install
执行后,在/usr/local/目录下面有了Qt-5.10.1目录,这应该就是安装目录。
进入qmake所在的bin文件夹,然后输入./qmake -v指令,如果出现正确的版本信息,则表示安装成功了。
注意:输入侧信息中“Using Qt version 5.10.1 in ….”,即qmake与qt版本是对应的。处理qt的pro文件时,如果你使用的是这个qmake,那么意味着你使用的是Qt5.10.1版本。
===================
编译安装完成之后,就可以使用了。使用Qt creator IDE的话,配置下就可以:
首先,在配置qt creator的编译工具时,需要选择qt version,执行了上面步骤之后,点击Add,如果qt creator不能自动找到你刚刚安装的qmake,就手动找到 /usr/local/Qt-5.10.1/bin/qmake并添加。
添加之后,可以新建一个kit,使用刚刚安装的qt版本。可参考:https://blog.csdn.net/qq_35865125/article/details/80107573
在qt creator中右键工程名字,运行qmake后,生成的makefile在执行文件目录下面!一顿好找啊!
一些小问题:
1)配置完qt creator, 切换qt kit后,在编辑器中警告include找不到头文件,但是编译成功(看到makefile里面的路径都是对的)
难道与qt creator的路径有关系?
参考:https://blog.csdn.net/lyc_daniel/article/details/12103189
一个线索,有人遇到同样的问题可以试一试:https://zhidao.baidu.com/question/296331360.html
2)一个警告:在qt creator中,将UM5工程的kit从原来的qt5.5切换到新安装的5.10时,在general message栏目输出:
Qt中 .pro 文件和 .pri 文件介绍:
https://blog.csdn.net/u011450537/article/details/42707149
安装过程中,qmake生成的makefile文件:
该文件是根据qt.pro生成,模板为TEMPLATE = subdirs, 作用原来就是进入一个个的模块文件夹,分别编译各个模块,各个模块的文件夹内都有.pro文件用于生成该模块的makefile文件,然后被编译。
FOERCE指出伪目标,作用是保证下面的命令在每次运行makefile时总会被执行! 从gunmake官网可以查到:http://www.gnu.org/software/make/manual/make.html#Reading
@表示不打印其后面的指令到屏幕,
test –d xxx测试xxx是否存在且为目录。
||类似逻辑或,当qtbase目录不存在时,则会执行后面的新建目录的操作,mkdir参数 :-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
cd qtbase/ && $(QMAKE) -o Makefile /home/…./qtbase.pro 应该是 成功进入qtbase目录之后,就执行后面的操作,即调用qtbase/bin目录下的qmake根据qtbase.pro生成对应的makefile文件.
cd qtbase/ && $(MAKE) –f Makefile qmake_all, 应该是调用make工具执行上一步生成的makefile文件。-f用于显示地指出要被解释的文件名字,qmake_all的作用不知道,在qtbase目录下也没有这个文件!
QMAKE = /home/xx/xxxxx/qtSourceCode/qt-everywhere-src-5.10.1/qtbase/bin/qmake
make 定义了很多默认变量,像常用的命令或者是命令选项之类的,什么CC啊,CFLAGS啊之类。${MAKE} 就是预设的 make 这个命令的名称(或者路径)。make -p | grep MAKE可以查看所有预定义的MAKE变量的当前值。
Make install解析:
执行该指令,对应到makefile中的install部分。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
其 他:
Qmake mannul: http://doc.qt.io/qt-5/qmake-manual.html#qmake
- https://www.cnblogs.com/senior-engineer/p/8469297.html
Qt wiki对qt.pro中的subdirs模板的讲解:
https://wiki.qt.io/SUBDIRS_-_handling_dependencies
other:
http://wiki.qt.io/Building_Qt_5_from_Git
http://wiki.qt.io/Get_the_Source