使用bash脚本编译Qt工程

        最近在搭建Qt工程的编译服务器,需要通过shell脚本执行工程的编译过程,写在这里,总结最近的工作。

1. 构建过程

        以Windows为例,在QtCreator中左侧选择“项目”便可以看到编译的指令和参数,这些操作也会在我们点击“构建项目”时执行,执行的过程可以在“编译输出”的窗口中看到,包含命令和编译的日志。

使用bash脚本编译Qt工程_第1张图片

        构建的步骤包含qmake和Make,有时也会用到Clean。我使用的命令也都基本来自于这里。

2. 过程分析(以MacOS为例,Windows同理)

        Make和Clean是依据Makefile文件进行的,而Makefile文件是qmake时生成的,所以第一步是qmake,那么在哪里执行qmake呢?

        第一次我的做法是这样子的:

cd 源码目录

qmake xxx.pro                        #Makefile生成在源码目录

cd ..

mkdir build-xxx-Desktop_Qt_5_14_2... #创建影子编译的目录
cd build-xxx-Desktop_Qt_5_14_2...    #进入影子编译目录

cp Makefile                          #从源码目录拷贝Makefile到影子编译目录

/usr/bin/make -j8                    #编译

        这样的结果是,编译时候找不到xxx.pro文件,make失败。后经排查,发现在Makefile中Project字段有记录qmake对于xxx.pro文件的相对路径,所以先前qmake生成的Makefile文件中记录的xxx.pro是在当前目录中,后来拷贝至影子编译目录必然找不到所需资源。

        于是我将步骤修改为先创建影子编译目录,在影子编译目录中qmake,Make……这样的顺序就是正确的。

mkdir build-demo-Desktop_Qt_5_14_2_MinGW_64_bit-Release
cd build-demo-Desktop_Qt_5_14_2_MinGW_64_bit-Release

/Users/xxxx/Qt5.14.2/5.14.2/clang_64/bin/qmake -o Makefile /path/to/demo.pro -spec macx-clang CONFIG+=release CONFIG+=x86_64 CONFIG+=qtquickcompiler

/usr/bin/make -j8

Windows相同,只需把编译工具替换:

D:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin\qmake.exe

D:\Qt\Qt5.14.2\Tools\mingw730_32\bin\mingw32-make.exe

你可能感兴趣的:(Qt,qt)