使用bash脚本编译Qt工程

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

1. 构建过程

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

        构建的步骤包含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

3. MacOS打包

        在MacOS上打包,使用的是Packages工具。

下载地址:

WhiteBox - Packages (free.fr)

用户手册:

Packages User Guide (free.fr)

        因为是给服务器使用,所以重点放在如何在命令行中调用工具打包。在用户手册第10章节有介绍 Packages - Building a project (free.fr)

$ /usr/local/bin/packagesbuild --project /path/to/the/project.pkgproj

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您是刚刚完成一个项目的软件开发人员,现在该进行交付了。或者,您是管理员,则需要在网络的Mac计算机上部署插件。每当您需要为Mac OS X 10.5或更高版本创建安装软件包或发行版时,软件包都是您所需要的强大而灵活的解决方案。 使用软件包,您可以定义哪些应用程序,捆绑软件,文档或文件夹应成为安装软件包有效负载的一部分,以及应将其安装在何处。您甚至可以设置安装时有效负载项目的所有者,组或权限。而且,如果您还需要安装现有的软件包,只需导入它,以便可以将其添加到您的发行版中。 借助其所见即所得的编辑器,“软件包”使您可以设置和本地化发行版的可自定义窗格。检查您的发行版以不同语言显示的样子从未如此简单。您甚至可以将Installer插件添加到您的发行版中。 当需要定义发行版选择之间的依赖关系时,可以依赖于Packages。您可以使用其可视化编辑器来构建简单或复杂的依赖关系树。您不必担心循环,Packages会自动检查所有内容,只为您提供可行的依赖项。 定义要安装的软件包应满足的要求并不需要您像开发人员那样思考。借助其用户友好的需求编辑器,Packages使非常简单的需求定义变得非常容易,并且仍然允许您使用JavaScript代码编辑器编写更复杂的需求。 如果您需要为应用程序或插件快速创建安装软件包,请将该项目拖到Dock(或Finder)中的Packages图标上。您的包裹将被创建。没有步骤2。QuickBuild使用智能定位器来确定应将项目安装在何处。有效载荷编辑器窗格中也提供了智能定位器。 为确保发行版或程序包在构建和安装之间不被篡改,可以对其进行签名。包可以使用证书在平面包和分发上签名。 使用packagesbuild命令行工具可以很容易地将软件包集成到自动化生产工作流程中。创建Packages项目后,packagesbuild工具将允许您从终端,shell脚本或Xcode Run Script Build阶段对其进行构建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值