許多插件開發(fā)者可能還不知道Qt CreatorSDK。(使用SDK)開發(fā)Qt Creator插件時(shí)就不需要編譯整個(gè)Qt Creator。另外,對(duì)于大多數(shù)C++開發(fā)者來說,要在三個(gè)平臺(tái)(WindowsLinuxmacOS)上編譯、測(cè)試和調(diào)試插件并不簡(jiǎn)單。


GitHub Actions


GitHub ActionsGitHub提供的一個(gè)CI/CD基礎(chǔ)功能,它可以運(yùn)行在所有三個(gè)平臺(tái)上!GitHub上也托管了一些Qt Creator插件的代碼倉庫,所以我準(zhǔn)備嘗試構(gòu)建Doxygen 插件(在我采用了GitHub Actions scriptfork版本上)。


GitHub Actions目前提供以下虛擬機(jī)(runners):

Ubuntu 16.04 LTS

Ubuntu 18.04 LTS

Windows Server 2016

Windows Server 2019

macOS 10.15


Qt SDK初始沒有安裝到runners上。這不是問題,因?yàn)槲覀兿M孟嗤陌姹镜?/span>QtQt Creator

開發(fā)者可以一次在一個(gè)平臺(tái)上開發(fā),也可以同時(shí)在多個(gè)平臺(tái)開發(fā)一個(gè)應(yīng)用(矩陣模式)


先決條件

由于GitHub提供了虛擬機(jī)和C++編譯器,所以開發(fā)者只需要獲得Qt庫和Qt Creator SDKs,然后就可以開始編譯

我決定編寫腳本實(shí)現(xiàn)自動(dòng)下載、解壓文件和編譯,腳本文件在三個(gè)文件中:CMake(通過-P命令行參數(shù)進(jìn)入腳本模式)。

我從download.Qt.io下載了Qt SDKQt Creator二進(jìn)制文件、源代碼和SDK


編譯插件

為了配置插件,開發(fā)者需要運(yùn)行

qmake doxygen.pro CONFIG+=release QTC_SOURCE="$ENV{GITHUB_WORKSPACE}/qtcreator" QTC_BUILD="$ENV{GITHUB_WORKSPACE}/qtcreator"


編譯也很簡(jiǎn)單,運(yùn)行

make -j<number of cores>  jom

最后,我們將擁有一個(gè)動(dòng)態(tài)鏈接庫(.dll.so.dynlib),它將發(fā)布給用戶。

觸發(fā)GitHub Actions


執(zhí)行git push后,將編譯插件,每次編譯的工作臨時(shí)文件都會(huì)被儲(chǔ)存。這看起來像這樣:



如果我們用git tag -a v0.4.7-qtc-4.11 -m "Release v0.4.7-qtc-4.11"命令標(biāo)記一次提交,然后用git push originv0.4.7-qtc-4.11命令提交。這將觸發(fā)release編譯,中間文件將被上載到該release。這看起來像:


新創(chuàng)建release如下:



它能否實(shí)際運(yùn)行?

GitHub Actions在平臺(tái)和編譯器上與編譯QtQt Creator的條件有一些不同:

Visual C++ 2019 vs Visual C++ 2017

Red Hat 7.2 vs Ubuntu 18.04

而實(shí)踐證明Qt Creator能夠在三個(gè)平臺(tái)上加載插件!