許多插件開發者可能還不知道Qt CreatorSDK。(使用SDK)開發Qt Creator插件時就不需要編譯整個Qt Creator。另外,對于大多數C++開發者來說,要在三個平臺(Windows、Linux、macOS)上編譯、測試和調試插件并不簡單。


GitHub Actions


GitHub ActionsGitHub提供的一個CI/CD基礎功能,它可以運行在所有三個平臺上!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初始沒有安裝到runners上。這不是問題,因為我們希望用相同的版本的QtQt Creator。

開發者可以一次在一個平臺上開發,也可以同時在多個平臺開發一個應用(矩陣模式)


先決條件

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

我決定編寫腳本實現自動下載、解壓文件和編譯,腳本文件在三個文件中:CMake(通過-P命令行參數進入腳本模式)。

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


編譯插件

為了配置插件,開發者需要運行

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


編譯也很簡單,運行

make -j<number of cores>  jom

最后,我們將擁有一個動態鏈接庫(.dll.so、.dynlib),它將發布給用戶。

觸發GitHub Actions


執行git push后,將編譯插件,每次編譯的工作臨時文件都會被儲存。這看起來像這樣:



如果我們用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命令提交。這將觸發release編譯,中間文件將被上載到該release。這看起來像:


新創建release如下:



它能否實際運行?

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

Visual C++ 2019 vs Visual C++ 2017

Red Hat 7.2 vs Ubuntu 18.04

而實踐證明Qt Creator能夠在三個平臺上加載插件!