持續(xù)集成用到的相關(guān)軟件TeamCity胧谈,這里就不多介紹了器予,主要說明下自動(dòng)構(gòu)建夺衍、打包腳本相關(guān)內(nèi)容
構(gòu)建程序
源代碼通過編譯生成exe的過程就是構(gòu)建了挪丢,寫代碼的時(shí)候IDE的綠色小三角點(diǎn)擊之后就會(huì)編譯你寫好的程序蹂风,沒有錯(cuò)誤的話還會(huì)順便將生成的程序運(yùn)行起來。這一過程用腳本來做的話就是自動(dòng)構(gòu)建了乾蓬,其實(shí)IDE也是通過命令調(diào)用編譯程序的惠啄,可以點(diǎn)擊項(xiàng)目->構(gòu)建設(shè)置
查看。
構(gòu)建設(shè)置
Qt-mingw 構(gòu)建參數(shù)
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 構(gòu)建參數(shù)
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
注意事項(xiàng)
- 構(gòu)建的時(shí)候qmake在源碼路徑下執(zhí)行的話任内,生成的makefile會(huì)在源碼對(duì)應(yīng)pro所在文件夾內(nèi)撵渡,這就相當(dāng)于IDE構(gòu)建中的shadow build沒開的情況,如果同時(shí)需要編譯多個(gè)編譯器的版本的時(shí)候死嗦,上一次編譯的makefile會(huì)被下一個(gè)編譯器讀取導(dǎo)致編譯失敗趋距,解決方法是在源碼路徑外調(diào)用qmake,相當(dāng)于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就會(huì)生成到build-test目錄中了越除,默認(rèn)其他生成文件也會(huì)在這里节腐,也可以在pro中指定:
MOC_DIR = temp/moc
RCC_DIR = temp/rcc
UI_DIR = temp/ui
OBJECTS_DIR = temp/obj
DESTDIR = $$PWD/bin
- msvc編譯時(shí)要設(shè)置相關(guān)的環(huán)境,需要調(diào)用VS2017的腳本文件
call vcvarsall.bat amd64_x86
摘盆,后面的參數(shù)是64位系統(tǒng)編譯生成32位程序的選項(xiàng)
打包
構(gòu)建并且將相關(guān)依賴的dll都拷貝到release目錄后翼雀,將release目錄弄個(gè)壓縮包拷貝給別人就能用了,如果想弄好看點(diǎn)或者需要寫注冊(cè)表時(shí)孩擂,可以用nsis制作一個(gè)打包腳本狼渊,相關(guān)內(nèi)容可以看之前的文章Qt之打包發(fā)布程序 (NSIS)
自動(dòng)化
前面兩步按照順序執(zhí)行完后就將源碼變成了最終的產(chǎn)品,這種固定的步驟就可以交給負(fù)責(zé)持續(xù)集成的軟件來做了类垦,只要指定好對(duì)應(yīng)的環(huán)境變量還有目錄位置即可囤锉,其他IDE也可以翻翻構(gòu)建配置,找到命令行參數(shù)后同理护锤。