美文网首页Qt学习
Qt程序的持续集成

Qt程序的持续集成

作者: 玖零儛 | 来源:发表于2019-03-02 15:27 被阅读0次

持续集成用到的相关软件TeamCity,这里就不多介绍了,主要说明下自动构建、打包脚本相关内容

构建程序

源代码通过编译生成exe的过程就是构建了,写代码的时候IDE的绿色小三角点击之后就会编译你写好的程序,没有错误的话还会顺便将生成的程序运行起来。这一过程用脚本来做的话就是自动构建了,其实IDE也是通过命令调用编译程序的,可以点击项目->构建设置查看。

构建设置

Qt-mingw 构建参数

SET PATH=%PATH%;C:\Qt\Qt5.7.0\5.7\mingw53_32\bin;
SET PATH=%PATH%;C:\Qt\Qt5.7.0\Tools\mingw530_32\bin;
SET RELEASE_DIR=%~dp0..\RunImage\release

CD %~dp0..
//Delete the last generated directory
...
if EXIST "RunImage" (
    RD /S /Q "RunImage"
)
...

mingw32-make.exe clean
qmake.exe YourProject.pro -spec win32-g++ "CONFIG+=release" && mingw32-make.exe qmake_all
mingw32-make.exe -j8
lrelease YourProject.pro

//copy you knows dll
copy /y Third\ffmpeg\bin\*.dll RunImage\release\

CD %RELEASE_DIR%
//copy Qt dll
windeployqt.exe YouProgram.exe 

Qt-msvc 构建参数

SET PATH=%PATH%;C:\Qt\Qt5.12.0\5.12.0\msvc2017\bin;
SET PATH=%PATH%;C:\Qt\Qt5.12.0\Tools\QtCreator\bin;
SET PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build;
SET RELEASE_DIR=%~dp0..\RunImage\release

CD %~dp0..
//Delete the last generated directory
...
if EXIST "RunImage" (
    RD /S /Q "RunImage"
)
...

//Set msvc environment
call vcvarsall.bat amd64_x86

jom.exe clean
qmake.exe YourProject.pro -spec win32-msvc "CONFIG+=qtquickcompiler" "CONFIG+=release"
jom qmake_all
jom.exe
lrelease YourProject.pro

//copy you knows dll
copy /y Third\ffmpeg\bin\*.dll RunImage\release\

CD %RELEASE_DIR%
//copy Qt dll
windeployqt.exe YouProgram.exe 

注意事项

  1. 构建的时候qmake在源码路径下执行的话,生成的makefile会在源码对应pro所在文件夹内,这就相当于IDE构建中的shadow build没开的情况,如果同时需要编译多个编译器的版本的时候,上一次编译的makefile会被下一个编译器读取导致编译失败,解决方法是在源码路径外调用qmake,相当于IDE的shadow build勾选的效果
CD %~dp0..\..\build-test
qmake.exe %~dp0..\ComicReader.pro -spec win32-g++ "CONFIG+=release" && mingw32-make.exe qmake_all
mingw32-make.exe -j4

这样makefile就会生成到build-test目录中了,默认其他生成文件也会在这里,也可以在pro中指定:

MOC_DIR         = temp/moc
RCC_DIR         = temp/rcc
UI_DIR          = temp/ui
OBJECTS_DIR     = temp/obj
DESTDIR         = $$PWD/bin
  1. msvc编译时要设置相关的环境,需要调用VS2017的脚本文件call vcvarsall.bat amd64_x86 ,后面的参数是64位系统编译生成32位程序的选项

打包

构建并且将相关依赖的dll都拷贝到release目录后,将release目录弄个压缩包拷贝给别人就能用了,如果想弄好看点或者需要写注册表时,可以用nsis制作一个打包脚本,相关内容可以看之前的文章Qt之打包发布程序 (NSIS)

自动化

前面两步按照顺序执行完后就将源码变成了最终的产品,这种固定的步骤就可以交给负责持续集成的软件来做了,只要指定好对应的环境变量还有目录位置即可,其他IDE也可以翻翻构建配置,找到命令行参数后同理。

相关文章

  • Qt程序的持续集成

    持续集成用到的相关软件TeamCity,这里就不多介绍了,主要说明下自动构建、打包脚本相关内容 构建程序 源代码通...

  • 第一个Qt程序-HellWorld!

    Qt提供了集成开发环境Qt Createor,但是一开始我并不想使用它,而是选择在命令行窗口编译Qt程序,Qt提供...

  • QML Book 第三章 开发工具

    3. Qt Creator 集成开发环境 Qt Creator 是 Qt 的默认集成开发环境。它是由 Qt 开发人...

  • 第1章 初识Qt 1.2 Qt Creater简介

    本节介绍Qt CrCreater的使用方法。 1.2.1 主界面 Qt Creater是Qt集成开发环境,你可以在...

  • Jmeter测试移动接口性能--持续集成

    Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目。用Jenkins来集成Jmeter,就可以实现...

  • QT 基本概念

    Qt:一个跨平台C++图形用户界面框架。Qt Creator:QT的IDE。IDE:集成开发环境(IDE,Inte...

  • Linux下打包发布Qt应用程序

    Linux下打包发布Qt应用程序 Linux下打包发布Qt应用程序 Linux下使用Qt进行开发的程序,如果想要在...

  • Harmony OS应用编译环境升级踩坑日记

    为了提高开发效率,需要将鸿蒙应用程序进行持续集成环境配置。我们采用Jenkins对鸿蒙应用的持续集成进行了配置。在...

  • Python Qt的窗体开发的基本操作

    本文章采用的是Qt4,是python(x,y) 套件中集成的,为啥不集成Qt5呢,懒得装啊:) 正文: 首先看成品...

  • week15 Kmeans和MFC GDI入门

    Qt和Qt Creator的区别Qt是C++的一个库,或者说是开发框架,里面集成了一些库函数,提高开发效率。Qt ...

网友评论

    本文标题:Qt程序的持续集成

    本文链接:https://www.haomeiwen.com/subject/azleuqtx.html