QT ПРОГРАММА ПОДСВЕТКИ КОДА MADCODEHIGHLIGHTER

madCodeHighlighter 1

Решил сделать программку для подсветки кода и генерации HTML шаблона для вставки не посредственно на свой сайт, чтобы не искать каждый раз онлайн-инструмент, через который я обычно это делаю. Моя программа будет интереснее, проще, а главное, к чему я пришел - это к пониманию, что ее надо делать при помощи KDE  библиотеки syntax-highlighting, которая используется для таких целей в самом QtCreator-e. Проблемы начались уже на начальном этапе, с cmake.exe в моей любимой среде программирования MSYS2. И поэтому я тут вкратце опишу, что надо делать, чтобы подготовиться к работе над программой.

🛠 Установка и настройка среды MSYS2 для сборки Qt-библиотек с CMake

Эта статья поможет вам пройти весь путь от установки MSYS2 до сборки библиотеки syntax-highlighting от KDE с помощью CMake и Qt 6.8.3. Подробно расписаны шаги, учтены возможные ошибки и даны советы, как их избежать. Подойдёт для новичков и тех, кто запутался в терминалах MSYS2.


📦 Шаг 1. Установка MSYS2

Скачайте установщик MSYS2 с официального сайта и установите в C:\msys64 (по умолчанию):

После установки откройте MSYS2 MSYS и выполните обновление:

pacman -Syu
# Перезапустите MSYS2 при необходимости
pacman -Su

🚪 Шаг 2. Выбор терминала

MSYS2 имеет несколько окружений:

  • 🐧 MSYS — POSIX-окружение для скриптов
  • 🗾 MINGW64 — GCC x64
  • 🟩 UCRT64 — совместимо с Universal CRT Windows

Важно: Все пакеты привязаны к конкретному окружению. То, что стоит в mingw64, не видно в ucrt64. Не смешивайте окружения в процессе работы.


⚖️ Шаг 3. Установка необходимых пакетов

Откройте MINGW64 или UCRT64 терминал и выполните:

pacman -S --needed git base-devel mingw-w64-x86_64-toolchain \
  mingw-w64-x86_64-cmake \
  mingw-w64-x86_64-qt6-base \
  mingw-w64-x86_64-qt6-tools \
  mingw-w64-x86_64-extra-cmake-modules \
  mingw-w64-x86_64-perl

Если используете UCRT64, замените префикс mingw-w64-x86_64- на mingw-w64-ucrt-x86_64-.


🗺 Шаг 4. Проверка путей

# Проверка cmake
which cmake
cmake --version

# Проверка qmake
which qmake6
qmake6 --version

Убедитесь, что команды указывают на путь /mingw64/bin/ или /ucrt64/bin/.


📂 Шаг 5. Скачивание библиотеки syntax-highlighting

wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/kf6-syntax-highlighting/6.16.0-0ubuntu1/kf6-syntax-highlighting_6.16.0.orig.tar.xz

Распаковываем... Далее:

cd /c/kde/syntax-highlighting-6.16.0
mkdir build && cd build

⚙️ Шаг 6. Сборка

cd /c/kde/syntax-highlighting-6.16.0/build
cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=C:/kde/kf6 -DCMAKE_PREFIX_PATH=C:/Qt/6.8.3/mingw_64
mingw32-make
mingw32-make install

Важно: путь C:/Qt/6.8.3/mingw_64 должен содержать установленный Qt6.


📄 Шаг 7. Подключение библиотеки в проект (.pro)

Чтобы использовать библиотеку syntax-highlighting в Qt-проекте на qmake, в .pro добавьте:

INCLUDEPATH += C:/kde/kf6/include/KF6
LIBS += -LC:/kde/kf6/lib -lKF6SyntaxHighlighting

Убедитесь, что путь C:/kde/kf6/bin добавлен в PATH при запуске программы.


💥 Возможные ошибки и решения

  • Qt6Core.dll не найден — добавьте C:/Qt/6.8.3/mingw_64/bin в PATH или запускайте из MSYS2-терминала. Кроме того, решается удалением папки C:\msys64 и переустановкой MSYS2, а так же переустановкой Qt.
  • точка входа не найдена — несовместимость версий CMake/Qt или путаница окружений.

🚀 build.sh для автоматизации

#!/usr/bin/env bash

set -e

QT_PATH="/c/Qt/6.8.3/mingw_64"
INSTALL_PATH="/c/kde/kf6"

mkdir -p build

cd /c/kde/syntax-highlighting-6.16.0/build 
cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=C:/kde/kf6 -DCMAKE_PREFIX_PATH=C:/Qt/6.8.3/mingw_64 mingw32-make mingw32-make install mingw32-make -j$(nproc) mingw32-make install

MSYS2 — мощный инструмент, но требует внимательности. Главное — всё делать в одном окружении (например, MINGW64), ставить пакеты именно под него, и тогда сборка syntax-highlighting завершится успешно, а готовые бинарники окажутся в C:/kde/kf6.

 

 

Сырцы

https://github.com/madmentat/madCodeHighlighter

Инсталятор под Windows