• 使用bash脚本编译Qt工程


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

    1. 构建过程

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

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

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

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

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

    1. cd 源码目录
    2. qmake xxx.pro #Makefile生成在源码目录
    3. cd ..
    4. mkdir build-xxx-Desktop_Qt_5_14_2... #创建影子编译的目录
    5. cd build-xxx-Desktop_Qt_5_14_2... #进入影子编译目录
    6. cp Makefile #从源码目录拷贝Makefile到影子编译目录
    7. /usr/bin/make -j8 #编译

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

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

    1. mkdir build-demo-Desktop_Qt_5_14_2_MinGW_64_bit-Release
    2. cd build-demo-Desktop_Qt_5_14_2_MinGW_64_bit-Release
    3. /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
    4. /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

  • 相关阅读:
    调教kimi写一个小说爬虫的全过程
    【KMP算法】大白话式详细图文解析(附代码)
    java中this关键字功能
    这几个小技巧,收藏起来总没错
    什么是通配符SSL证书?它和多域名SSL证书的区别是什么?
    P8022 [ONTAK2015] Cięcie 题解
    GaussDB数据库SQL系列-行列转换
    Aroid问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度
    Qt QWebEngineView 忽略https验证
    模型压缩算法库 MMRazor 全面升级,更灵活、更自动
  • 原文地址:https://blog.csdn.net/zhango5/article/details/133220385