编译、安装Qt源代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35865125/article/details/87849891

                                          一切有为法,如梦幻泡影,如露亦如电,应作如是观


首先,下载源码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

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_35865125/article/details/87849891
今日推荐