许多插件开发者可能还不知道Qt CreatorSDK。(使用SDK)开发Qt Creator插件时就不需要编译整个Qt Creator。另外,对于大多数C++开发者来说,要在三个平台(WindowsLinuxmacOS)上编译、测试和调试插件并不简单。


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能够在三个平台上加载插件!