mafulechka
mafulechkaJan. 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!

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Lz

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:70points,
  • Rating points1
РК

Qt - Test 001. Signals and slots

  • Result:84points,
  • Rating points4
Last comments
k
kmssrFeb. 8, 2024, 6:43 p.m.
Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lesson 007. Working with ICMP Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVADec. 25, 2023, 10:30 a.m.
Boost - static linking in CMake project under Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
J
JonnyJoDec. 25, 2023, 8:38 a.m.
Boost - static linking in CMake project under Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
G
GvozdikDec. 18, 2023, 9:01 p.m.
Qt/C++ - Lesson 056. Connecting the Boost library in Qt for MinGW and MSVC compilers Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Now discuss on the forum
BlinCT
BlinCTJune 25, 2024, 1 a.m.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
Evgenii Legotckoi
Evgenii LegotckoiJune 24, 2024, 3:11 p.m.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
BlinCT
BlinCTMay 5, 2024, 5:46 a.m.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiMay 2, 2024, 2:07 p.m.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.
IscanderChe
IscanderCheApril 30, 2024, 4:22 a.m.
Во Flask рендер шаблона не передаётся в браузер Доброе утро! Имеется вот такой шаблон: <!doctype html><html> <head> <title>{{ title }}</title> <link rel="stylesheet" href="{{ url_…

Follow us in social networks