mafulechka
Jan. 27, 2020, 1:52 p.m.

Building Qt Creator plugins with GitHub Actions

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!

Do you like it? Share on social networks!

Comments

Only authorized users can post comments.
Please, Log in or Sign up
  • Last comments
  • AK
    April 24, 2025, 12:04 p.m.
    UPD: Переписал логику воспроизведения через стороннюю библиотеку BASS. Там выбрать можно
  • Evgenii Legotckoi
    April 16, 2025, 5:08 p.m.
    Благодарю за отзыв. И вам желаю всяческих успехов!
  • IscanderChe
    April 12, 2025, 5:12 p.m.
    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
  • AK
    April 1, 2025, 11:41 a.m.
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    March 9, 2025, 9:02 p.m.
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…