mafulechka
mafulechkaJan. 27, 2020, 2:52 a.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
AD

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

  • Result:50points,
  • Rating points-4
m

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

  • Result:80points,
  • Rating points4
m

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

  • Result:20points,
  • Rating points-10
Last comments
ИМ
Игорь МаксимовNov. 22, 2024, 11:51 a.m.
Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiOct. 31, 2024, 2:37 p.m.
Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEOct. 19, 2024, 8:19 a.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовOct. 5, 2024, 7:51 a.m.
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5July 5, 2024, 11:02 a.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Now discuss on the forum
Evgenii Legotckoi
Evgenii LegotckoiJune 24, 2024, 3:11 p.m.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Nov. 15, 2024, 6:04 a.m.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectJune 4, 2022, 3:49 a.m.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9AnonimOct. 25, 2024, 9:10 a.m.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Follow us in social networks