許多插件開發(fā)者可能還不知道Qt Creator有SDK。(使用SDK)開發(fā)Qt Creator插件時(shí)就不需要編譯整個(gè)Qt Creator。另外,對(duì)于大多數(shù)C++開發(fā)者來說,要在三個(gè)平臺(tái)(Windows、Linux、macOS)上編譯、測(cè)試和調(diào)試插件并不簡(jiǎn)單。
GitHub Actions
GitHub Actions是GitHub提供的一個(gè)CI/CD基礎(chǔ)功能,它可以運(yùn)行在所有三個(gè)平臺(tái)上!GitHub上也托管了一些Qt Creator插件的代碼倉庫,所以我準(zhǔn)備嘗試構(gòu)建Doxygen 插件(在我采用了GitHub Actions script的fork版本上)。
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>Qt和Qt 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 SDK和Qt 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)和編譯器上與編譯Qt和Qt Creator的條件有一些不同:
Visual C++ 2019 vs Visual C++ 2017
Red Hat 7.2 vs Ubuntu 18.04
而實(shí)踐證明Qt Creator能夠在三個(gè)平臺(tái)上加載插件!