Qt Creator is a cross-platform, highly modular Qt C++ application.
To build the Qt Creator plugin you need:
• C++ compiler
• Qt SDK
• Qt Creator SDK
Few plugin developers know that Qt Creator releases an SDK. You don't need to compile Qt Creator to develop a Qt Creator plugin. Also, having access to all three platforms (Windows, Linux, macOS) is not common for most C++ developers.
GitHub Actions
GitHub Actions is a CI/CD framework provided by GitHub that gives you access to all three platforms!
GitHub also contains several repositories of Qt Creator plugins, so the developers decided to try to create a Doxygen plugin .
GitHub Actions currently offers the following virtual machines (runners):
• Ubuntu 16.04 LTS
• Ubuntu 18.04 LTS
• Windows Server 2016
• Windows Server 2019
• macOS 10.15
The Qt SDK is not part of the software installed on the runners. This is not a problem since the developers want to build with the same version of Qt as Qt Creator itself.
You can build a platform simultaneously or several in parallel (matrix mode).
Background
Because GitHub provides virtual machines and C++ compilers, you just need to get the Qt and Qt Creator SDK and then "compile".
To download the files, extract them and start compiling, the developers decided to use the scripting language that is installed on all three of them: CMake (in scripting mode via the -P command line argument).
Building the plugin
To set up the plugin, you just need to run:
qmake doxygen.pro CONFIG+=release QTC_SOURCE="$ENV{GITHUB_WORKSPACE}/qtcreator" QTC_BUILD="$ENV{GITHUB_WORKSPACE}/qtcreator"
Building is as easy as running make -j<number-of-cores> or jom
At the end there will be a shared library (.dll, .so, .dynlib) that will be distributed to users.
Launch GitHub Actions
With git push the plugin will be built and the artifacts will be saved on every build. It looks like this:
If we tag a commit with git tag -a v0.4.7-qtc-4.11 -m "Release v0.4.7-qtc-4.11" and then git push origin v0.4.7-qtc-4.11 will trigger a release, and download the artifacts to that release. It looks like this:
The newly created release looks like this:
It works?
GitHub Actions has some platform and compiler differences when it comes to how Qt and Qt Creator are built:
• Visual C++ 2019 против Visual C++ 2017
• Red Hat 7.2 vs. Ubuntu 18.04
As it turns out, Qt Creator was able to load the plugin on all three platforms!