Qt Creator is a cross platform, highly modular, Qt C++ application.
In order to build a Qt Creator plugin you need:
A C++ compiler
The Qt SDK
The Qt Creator SDK
Not many plugin developers know that Qt Creator is shipping an SDK. You don't need to compile Qt Creator in order to develop a Qt Creator plugin. Also having access to all three platforms (Windows, Linux, macOS) is not a common thing for most C++ developers.
GitHub Actions is a CI/CD infrastructure provided by GitHub which would give access to all three platforms! GitHub is also hosting a few Qt Creator plugin repositories, so I decided to try to build the Doxygen plugin (my fork with the GitHub Actions script).
GitHub Actions currently offers the following virtual machines (runners):
Ubuntu 16.04 LTS
Ubuntu 18.04 LTS
Windows Server 2016
Windows Server 2019
Qt SDK is not part of the software installed on the runners. This is not a problem since we want to build with the same Qt version that Qt Creator itself was build.
One can build a platform at a time, or multiple in parallel (matrix mode)
Since GitHub is providing the virtual machines and the C++ compilers one just has to obtain Qt and Qt Creator SDKs and then just "compile".
In order to download files, to extract them, and to start compilation I decided to use a scripting language that is installed on all three of them: CMake (in scripting mode via -P command line argument).
I downloaded the Qt SDK and Qt Creator Binaries, Sources, SDK from download.qt.io.
Building the plugin
In order to configure the plugin, one just needs to run
Building is as easy as running make -j <number-of-cores> or jom.
At the end we will have a shared library (.dll, .so, .dynlib), which will be distributed to the users.
Triggering GitHub Actions
On git push the plugin will be built and the artifacts stored on every build. This 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 the creation of a release, and the upload of artifacts to that release. This looks like:
The newly created release looks like:
Does it run?
GitHub Actions has some differences in platforms and compilers when it comes to how Qt and Qt Creator are built:
Visual C++ 2019 vs 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!
All of this was possible with a Yaml file that needs to be copied into qtcreator-doxygen/.github/workflows/build_qmake.yml