許多插件開發者可能還不知道Qt Creator有SDK。(使用SDK)開發Qt Creator插件時就不需要編譯整個Qt Creator。另外,對于大多數C++開發者來說,要在三個平臺(Windows、Linux、macOS)上編譯、測試和調試插件并不簡單。
GitHub Actions
GitHub Actions是GitHub提供的一個CI/CD基礎功能,它可以運行在所有三個平臺上!GitHub上也托管了一些Qt Creator插件的代碼倉庫,所以我準備嘗試構建Doxygen 插件(在我采用了GitHub Actions script的fork版本上)。
GitHub Actions目前提供以下虛擬機(runners):
Ubuntu 16.04 LTS
Ubuntu 18.04 LTS
Windows Server 2016
Windows Server 2019
macOS 10.15
Qt SDK初始沒有安裝到runners上。這不是問題,因為我們希望用相同的版本的Qt和Qt Creator。
開發者可以一次在一個平臺上開發,也可以同時在多個平臺開發一個應用(矩陣模式)
先決條件
由于GitHub提供了虛擬機和C++編譯器,所以開發者只需要獲得Qt庫和Qt Creator SDKs,然后就可以開始“編譯”。
我決定編寫腳本實現自動下載、解壓文件和編譯,腳本文件在三個文件中:CMake(通過-P命令行參數進入腳本模式)。
我從download.Qt.io下載了Qt SDK和Qt 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在平臺和編譯器上與編譯Qt和Qt Creator的條件有一些不同:
Visual C++ 2019 vs Visual C++ 2017
Red Hat 7.2 vs Ubuntu 18.04
而實踐證明Qt Creator能夠在三個平臺上加載插件!