В этой статье описывается, как создать (собрать) плагин Qt Creator, используя новый шаблон плагина CMake, предоставленный Qt Creator. А так же, описывается общая структура шаблона плагина.
Создание проекта плагина
Qt Creator поставляется с мастером для плагинов IDE Qt Creator, который создает для вас минимальный плагин. Этот плагин удобно использовать для тестирования среды разработки.
Для создания плагина IDE Qt Creator необходимо прежде всего скачать необходимую библиотеку "Qt Creator (№ версии) Plugin Development". Эта библиотека по умолчанию не установлена в репозитории Linux, и если вы установили IDE Qt Creator из репозитория Linux то при старте сборки стартового плагина и любого другого следующую ошибку. ошибка: By not providing "FindQtCreator.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "QtCreator", but CMake did not find one. Could not find a package configuration file provided by "QtCreator" with any of the following names: QtCreatorConfig.cmake qtcreator-config.cmake Add the installation prefix of "QtCreator" to CMAKE_PREFIX_PATH or set "QtCreator_DIR" to a directory containing one of the above files. If "QtCreator" provides a separate development package or SDK, be sure it has been installed. Для решения этой проблемы лучше всего скачать отдельно IDE Qt Creator с уже установленной библиотекой "Qt Creator Plugin Development". Это так же позволит выполнить рекомендации с сайта Qt Creator. Если вы живёте не в России, то вам будет удобнее всего скачать IDE Qt Creator из онлайн установщика выбрав необходимые инструменты разработки рисунок 1.

Для тех кто находится на территории России есть 3 варианта: 1 вариант использовать VPN для онлайн установки, 2 вариант вручную собрать Qt Creator из исходного кода (я не тестировал этот способ, так как использую IDE Qt Creator из репозитория, с различными версиями сборщика Qt Creator (профиля Qt), которые собирал из исходного кода и добавил в IDE Qt Creator), 3 вариант это отдельная установка через оффлайн установщик (к примеру qt-creator-opensource-linux-x86_64-6.0.2.run) соответствующий версии IDE Qt Creator с сайта рисунок 2. Обратите внимание, что скачивать необходимо ту версию IDE Qt Creator на которую делается плагин (это версия указанная сверху, а не версия с помощью которой собрали), подробнее об этом сказано после рисунка 7.

Обратите внимание, что ссылка для версии Qt 5 и ссылка для Qt 6 не работает без VPN рисунок 3.

Затем просто возможно установить из qt-creator-opensource-linux-x86_64-6.0.2.run, отключив интернет на компьютере, иначе установка будет заблокирована для России. Не забудьте установить параметр исполнительного файла на файл .run. Например, sudo chmod 777 /путь к файлу. Пример запуска установки через консоль рисунок 4.

Затем выполните пошаговую установку из окна UI как показано на рисунках 5-7.

Далее необходимо выбрать директорию в которой будет установлена IDE Qt Creator и библиотеки. Эту ссылку нужно будет использовать далее, для указания в Cmake директории в которой установлены библиотеки плагинов "Qt Creator (№ версии) Plugin Development".

Далее необходимо не забыть выбрать полную установку IDE Qt Creator вместе с "Qt Creator (№ версии) Plugin Development" как показано на рисунке 7.

На сайте Qt Creator настоятельно рекомендуется использовать два разных экземпляра Qt для разработки и тестирования вашего плагина. В противном случае ваш плагин также будет загружен в вашу среду разработки, что может сделать Qt нестабильным, из-за того что плагин все еще нестабилен. Вы можете просто создать копию своей сборки Qt Creator и использовать одну для фактической разработки, а другую для тестирования вашего плагина. Как показывает мой личный опыт это не столь критично, это вызывает такое явление: в случаи отладки новых плагинов, метод qDebug() выводится в отладочную информацию от других плагинов, поэтому релизную версию плагина лучше избавить от qDebug, qInfo, qWarning и заблокировать другую отладочную информацию как в моём плагине. Ограничение вывода информации в CMakeLists.txt: add_definitions(-DQT_NO_DEBUG_OUTPUT -DQT_NO_WARNING_OUTPUT -DQT_NO_INFO_OUTPUT) в удобном месте .cpp реализовать метод qInstallMessageHandler(customMessageHandler); как в разработанном плагине, в большинстве случаев одного метода из двух будет достаточно.
Увидеть версии своей сборки Qt Creator возможно в UI вкладке справка как это показана на рисунке 8. Тут верхняя версия обозначает версию IDE Qt Creator, а нижняя версию сборщика Qt Creator (версия самого Qt Creator, профиль Qt).

Вы должны убедиться, что вы используете ту же версию сборки QT, что и для создания плагина. Из-за правил бинарной совместимости и совместимости с источником сборки QT, мастер плагинов QT Creator создает плагин, который может работать только с той же версией сборки QT, с которой он был создан.
Обратите внимание, что IDE Qt6.0.2 для версии Qt 5 и IDE Qt13.0.0 для Qt 6 это версии которые входят в репозитории linux Ubuntu 22.04 и Ubuntu 24.04. Я собирал свою версию плагина для этих 2 версий. Сборка под версию Qt 5 для linux Ubuntu 22.04 имеет некоторые особенности также как и под версию Qt 6. В целом стандартный шаблон под версию Qt 5 отсутствует и вместо него там стоят библиотеки под Qt 6. Это связано с тем что IDE Qt Creator 6.0.2 собрана с помощью Qt 6.2.2, для решения этой проблемы достаточно просто переписать библиотеку, которая устанавливается из оффлайн установщика. Для этого я сделал небольшой патч со всеми изменениями рисунок 9. Скачать патч с изменениями возможно по ссылке. В этом патче возможно точно увидеть все изменения их немного и их легко можно понять, они связаны с нахождением библиотек Qt 5. Для других версий IDE Qt Creator возможно просто измене одной строчки в файле путь к коду/lib/cmake/QtCreator/FindQt5.cmake -find_package(Qt6 ${Qt5_FIND_VERSION} CONFIG COMPONENTS Core QUIET) +find_package(Qt5 ${Qt5_FIND_VERSION} CONFIG COMPONENTS Core QUIET). Также стоит отметить что ссылки на файлы библиотек меняются от версии к версии, и их следует при компиляции кода, в случаи ошибки, проверять место нахождения вручную. Это касается разницы между версиями моего плагина Qt5 и Qt6, это также может касаться разницы между различными версиями Qt5 и Qt6. Еще есть разница в файле Diagnostictools.json.in, сама структура этого фала подписи к плагину меняется от версии к версии.

Чтобы собрать базовый плагин Qt Creator именно под вашу версию IDE Qt Creator, так как этот шаблон по умолчанию будет содержать именно ту структуру которая актуальна для вашей версии, нужно выполнить следующие. Сначала убедится, что ваш сборщик (профиль Qt) имеет все необходимые для этого инструменты. ошибка: The imported target "Qt6::qtwebenginequickdelegatesplugin" references the file "/usr/lib/x86_64-linux-gnu/qt6/qml/QtWebEngine/ControlsDelegates/libqtwebenginequickdelegatesplugin.so" Для исправления этой ошибки я использую сборщик (профиль Qt), который собрал из исходного кода, и как следствие у меня есть все инструменты. Вы можете попробовать решить эту проблему скачав недостающие библиотеки(модули) sudo apt install qml6-module-* или каким то иным способом. (Это решение точно подходит для Qt6, для Qt5 я не знаю какие могут быть ошибки, также я мог устанавливать недостающие конфигурации, когда делал другие проекты) Обратите внимание, что версия сборщика (профиля Qt) должна совпадать с версией сборщика (профиля Qt) IDE Qt Creator.
-
Выбирать Файл > New Project > Библиотека > Модуль Qt Creator > выбрать.
"Выберите мастер плагина Qt" Затем следует ввести название и местоположение проекта через обзор директорий.
"Выберите имя и место проекта" -
Дайте вашему проекту имя и укажите, в каком пути будет создан этот проект. Имя фактического плагина может отличаться от названия проекта. Вы выберете это имя позже в мастере.
-
Здесь во вкладке Подробнее указываются данные записанные в файл для моего плагина Diagnostictools.json.in где Diagnostictools соответствует вашему названию модуля и эти данные возможно затем поменять в соответствующем файле .json.in
"Укажите детали вашего плагина" -
Поле Plugin name (Название модуля), это имя плагина используется в качестве идентификатора, а также является основой для имен файлов и классов в коде.
-
Значения следующих полей являются в основном информационными и показаны в подробном представлении в обзоре плагина Qt Creator ( Help (Справка) > About Plugins(О модулях) > (подробнее), или Qt Creator > About Plugins на macOS).
-
Vendor name (Разработчик) это краткое название компании или организации, которое создало плагин. Это также используется для имени Поставщик, когда плагин будет развернут.
-
Copyright (Авторское право) это строка авторских прав.
-
License (Лицензия) Текст лицензии.
-
Description (Описание) это краткое описание того, что делает плагин.
-
URL это веб -сайт, на котором пользователь может найти больше информации о плагине и/или организации, предоставляющей его.
-
-
Поле Qt Creator build (Сборка Qt Creator) это каталог установки экземпляра IDE Qt Creator, который вы хотите использовать для проверки вашего плагина. Если вы не сделаете это правильно, вы получите ошибки компиляции для своего плагина, и ваш плагин может вообще не отображаться в IDE Qt Creator или отображается как неактивный красным крестиком. Для исправления этого нужно изменить эту строку указав нужный каталог list(APPEND CMAKE_PREFIX_PATH "/home/vladimirpve/qtcreator-13.0.0")
-
Продолжить до Translation File диалог
"Выберите язык, чтобы локализовать свой плагин" -
Выберите язык, чтобы локализовать свой плагин. Это устанавливает поддержку перевода для выбранного языка.
-
Продолжить до Kit Selection (Выбор комплекта)
"Выберите комплект, чтобы создать и запустить свой проект " -
Тут нужно выбрать версию сборщика (профиля Qt) которая совпадает с версией сборщика (профиля Qt) IDE Qt Creator. Узнать эту версию возможно в UI вкладке справка, как это показана на рисунке 8. Если вы используете несовместимую версию Qt для создания своего плагина, вы получите ошибки, пока Qt Creator пытается загрузить ваш плагин.
-
Продолжить до Project Management (управление проектом)
"Сводка созданных файлов" -
Просмотрите файлы, которые будут созданы, выберите систему управления версиями, которую QT должен использовать для вашего проекта (всегда хорошая идея!). И на этом создание проекта завершается.
Сборка, отладка и запуск плагина
Если вы пройдете правильный путь сборки QT Creator в мастере проекта, ваш плагин должен просто нормально собраться при нажатии кнопки сборки. Перед запуском проекта выберите Build & Run > Run (Проекты > запустить > запустить «конфигурация запуска») Чтобы указать настройки запуска:

Выберите путь к исполняемому файлу IDE Qt Creator, тут следует указать исполняемый файл той версии IDE Qt Creator на которую вы делаете плагин. Установите значение Command line arguments (Параметры командной строки) -pluginpath %{buildDir}.
Когда вы нажимаете Ctrl+R запустится IDE Qt Creator, и вы можете проверить, что ваш плагин успешно загружен, ища вход в меню Tools > Example и поиск плагина в ( Help (Справка) > About Plugins(О модулях) > (подробнее), или Qt Creator > About Plugins на macOS).
Структура файла
Мастер плагина создает набор основных файлов, которые нуждаются или должны иметь плагин. Мы подробно рассмотрим некоторые из них в следующих разделах, вот краткий обзор:
Файл |
Роль |
---|---|
Описывает, как создать и запустить плагин. |
|
Шаблон метаданных плагинов. Cmake создает «Название проекта».json.in из этого файла, который собирается в плагин в качестве метаданных. Метаданные считываются IDE Qt Creator, чтобы узнать о плагине. Обратите внимание что, есть разница в файле «Название проекта».json.in сама структура этого фала подписи к плагину меняется от версии к версии IDE Qt Creator, и нельзя собирать проект плагина со старым фалом под новую версию и наоборот. Базовый шаблон плагина в IDE Qt Creator имеет актуальную версию файла .json.in поэтому для сборки нового плагина стоит сначала создать базовый шаблон. |
|
CMakeLists.txt |
Файл проекта, используемый Cmake для генерации файлов сборки и создания плагина. Часто требуется указание библиотек find_library(PROJECT_EXPLORER_LIB NAMES ProjectExplorer PATHS ~/qtcreator-13.0.0/lib/qtcreator/plugins) |
example_global.h |
Содержит определения макросов, которые полезны, когда этот плагин должен экспортировать символы в другие плагины. |
exampleconstants.h |
Заголовок определяет постоянные, используемые кодом плагина. |
example.h, example.cpp |
Заголовок C ++ и исходные файлы, которые определяют класс плагинов, из которых будет создан экземпляр плагина и затем запускаться менеджером плагинов IDE Qt Creator. |
build_cmake.yml |
Добавляет действие GitHub и рабочий процесс, который создает ваш плагин в любое время, когда вы нажимаете на GitHub на Windows, Linux и MacOS. Для получения дополнительной информации см. .githubworkflowREADME.md. |
Дополнительная информация содержится по ссылке Creating Your First Plugin
Заключение
После сборки базового плагина вы сможете собрать полезный плагин DiagnosticTools_qt5_qt6, который позволит вам оценить возможности расширения функционала IDE Qt Creator с помощью плагинов, а заодно и закрепить навыки сборки плагинов Qt5 и Qt6.
Для добавления собранного плагина в IDE Qt Creator требуется релизную версию плагина /build/Qt_6_4_2_Qt_6_4_2-Release/lib/qtcreator/plugins/libDiagnostictools.so добавить в директорию к другим плагинам, директория /usr/lib/x86_64-linux-gnu/qtcreator/plugins/ или ваша по похожему адресу, там где установлен IDE Qt Creator.
пример команды:
sudo cp '/home/vladimirpve/Doc/plagin/Diagnostictools Qt_6_4_2/build/Qt_6_4_2_Qt_6_4_2-Release/lib/qtcreator/plugins/libDiagnostictools.so' /usr/lib/x86_64-linux-gnu/qtcreator/plugins/
Автор: PVE-Vladimir