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


GitHub Actions


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


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

Ubuntu 16.04 LTS

Ubuntu 18.04 LTS

Windows Server 2016

Windows Server 2019

macOS 10.15


Qt SDK初始沒(méi)有安裝到runners上。這不是問(wèn)題,因為我們希望用相同的版本的QtQt Creator。

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


先決條件

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

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

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


編譯插件

為了配置插件,開(kāi)發(fā)者需要運行

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


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

make -j<number of cores>  jom

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

觸發(fā)GitHub Actions


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



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


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



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

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

Visual C++ 2019 vs Visual C++ 2017

Red Hat 7.2 vs Ubuntu 18.04

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