Твій охайний шаблон для C++ програми за адресою GitHub репозиторію https://github.com/yuriysydor1991/cpp-app-template і його GitLab дзеркала https://gitlab.com/yuriysydor1991/cpp-app-template
Ціль проекту-шаблону
Проект-шаблон призначений для пришвидшення процесу побудови програми на стадії започаткування проекту за допомогою готової початкової структури програми. Отож розробник може одразу перейти до реалізації конкретної програми з мінімальними затратами на базову структуру.
Полегшує вийти за рамки коду - створюй складні і готові для постачання програмні продукти швидко!
Дозволяє стрімке створення завершеного програмного продукту - на противагу звичайного куска коду чи простої програми.
Шаблонний проект не являється фреймворком у традиційних термінах, отож інфраструктурні елементи можна змінювати за бажанням або видалити за непотреби.
Станом на вересень 2026 року шаблон пропонує понад півсотні спеціалізацій у тринадцяти тематичних категоріях - від віконних програм і 3D-графіки до баз даних, карт, штучного інтелекту та звукових ресурсів, - а також вбудовані інтеграції бібліотек, сім генераторів пакунків, інструменти контролю якості коду, контейнери Docker, конвеєр Jenkins і документацію українською та англійською мовами.
Створи форк і одразу реалізуй програму!
Спеціалізації шаблонного проекту
Переглянь доступні гілки у репозиторії проекту-шаблону і використай найбільш підходящу спеціалізацію або комбінуй декілька гілок щоб створити необхідну структуру шаблону:
Базова структура програми
- гілка main розміщена на [GitHub, GitLab] - один файл з функцією
mainі з усіма можливими інтеграціями для генерації одного бінарного виконуваного файлу. - гілка app розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу.
- гілка applib розміщена на [GitHub, GitLab] яка складається з класів бінарного виконуваного файлу з додатковими інфраструктурними класами для генерації підключаємої бібліотеки і заголовкових файлів (доступні для встановлення), що призначені для поширення коду бібліотеки для повторного перевикористання іншими бінарними файлами.
- гілка lib розміщена на [GitHub, GitLab] і яка призначена для предоставляння початкової інфраструктури для реалізації бібліотеки разом з заголовковими підключаємими файлами і документацією за необхідності.
- гілка appMeson розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу разом з системою побудови Meson.
- гілка applibMeson розміщена на [GitHub, GitLab] - шаблон застосунку з виконуваним файлом та додатковою окремою бібліотекою з заголовковими підключаємими файлами (доступними для встановлення) для повторного використання коду бібліотеки в кількох застосунках, побудований системою Meson, що знаходиться проектами-споживачами на Meson через
dependency()(pkg-config) з опціональною підтримкою CMakefind_package(). - гілка libMeson розміщена на [GitHub, GitLab] - шаблон бібліотеки з заголовковими підключаємими файлами і документацією, побудованою системою Meson, що знаходиться проектами-споживачами на Meson через
dependency()(pkg-config) з опціональною підтримкою CMakefind_package().
Логування
- гілка appLog4Cpp5 розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням багатофункціональної бібліотеки логування повідомлень log4cpp.
- гілка appBoostLog розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням бібліотеки логування повідомлень Boost.Log.
Віконні системи / GUI
- гілка appQt6 розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу разом з структурою заданою для розробки віконної програми на базі Qt6 разом з QML.
- гілка appGtkmm3 розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу разом з структурою заданою для розробки віконної програми на базі Gtkmm-3.0 з C++.
- гілка appGtkmm3Glade розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу разом з структурою заданою для розробки віконної програми на базі C++ з Gtkmm-3.0 і Glade - програми для створення візуальних інтерфейсів.
- гілка appGtkmm4 розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу разом з структурою заданою для розробки віконної програми на базі Gtkmm-4 з C++.
- гілка appGtkmm4Libadwaita розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу, усе головне вікно якого побудоване з віджетів бібліотеки libadwaita -
AdwApplicationWindowзAdwToolbarView,AdwHeaderBarі розміщеним зверху заголовком з описом над логотипом, що заповнює усю вільну висоту - поряд з привʼязкою C++ Gtkmm-4. - гілка appwxWidgets розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу разом з структурою заданою для розробки кросплатформної віконної програми на базі wxWidgets з C++, що надається через CMake FetchContent.
Іконки / Звук / Ресурси
- гілка appFontAwesome розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу, що тримає цілий набір іконок Font Awesome Free викачаним та недоторканим, робить кожну іконку кожного стилю доступною з коду C++ та записує маніфести Qt (.qrc) і Gtkmm (GResource), які вбудовують обрані іконки у двійковий файл програми.
- гілка appKenneyAudio розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу, що тримає набори звукових ефектів Kenney під ліцензією CC0 завантаженими та недоторканими, робить кожен звук кожного набору доступним з коду C++ та записує маніфести Qt (.qrc) і Gtkmm (GResource), які вбудовують обрані звуки у двійковий файл програми.
- гілка appOpenGameArtAudio розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу, що тримає дібрані набори звуків OpenGameArt завантаженими та недоторканими, фіксує ліцензію кожного набору у маніфесті, який потрапляє до двійкового файлу, робить кожен звук кожного набору доступним з коду C++ та записує маніфести Qt (.qrc) і Gtkmm (GResource), які вбудовують обрані звуки у двійковий файл програми.
- гілка appFreesoundAudio розміщена на [GitHub, GitLab] яка містить загальні класи для генерації бінарного виконуваного файлу, що тримає дібрані звуки Freesound завантаженими та недоторканими, фіксує ліцензію і сторінку-джерело кожного окремого звуку у маніфесті, який потрапляє до двійкового файлу, робить кожен звук доступним з коду C++ та записує маніфести Qt (.qrc) і Gtkmm (GResource), які вбудовують обрані звуки у двійковий файл програми.
3D / OpenGL / Vulkan
- гілка appSDL3 розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу разом з початковою інфраструктурою для розробки у OpenGL 3D разом з SDL3 і набагато більше!
- гілка appSDL2 розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу разом з початковою інфраструктурою для розробки у OpenGL 3D разом з SDL2 і набагато більше!
- гілка appGtkmm4GLArea розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу, що вбудовує рендеринг OpenGL безпосередньо у вікно Gtkmm-4 за допомогою нативного віджета Gtk::GLArea.
- гілка appQt6GLArea розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу, що вбудовує рендеринг OpenGL безпосередньо у вікно Qt6 QML за допомогою елемента сцен-графа QQuickFramebufferObject.
- гілка appSFML розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу разом з початковою інфраструктурою на базі мультимедійної бібліотеки SFML (2D графіка, вікна, ввід та доступ до OpenGL), яка надається системним пакетом або резервним механізмом CMake FetchContent.
- гілка appFreeGlut розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу разом з початковою інфраструктурою для розробки у OpenGL 3D разом з FreeGlut.
- гілка appQt6Vulkan розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу, що створює інстанс Vulkan через нативний Qt6 QVulkanInstance (
Qt6::Gui), перелічує доступні фізичні пристрої (відеокарти), виводить їхні властивості через журнал програми та показує порожнє чорне вікно, відмальоване засобами Vulkan (QVulkanWindow, очищене до чорного кольору) протягом роботи циклу подій Qt. - гілка appGtkmm4Vulkan розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу, що створює інстанс Vulkan через сирий завантажувач Vulkan, перелічує доступні фізичні пристрої (відеокарти) та виводить їхні властивості через журнал програми, після чого відмальовує чорний кадр засобами Vulkan у позаекранне зображення та показує його у вікні Gtkmm-4 через Linux dma-buf (Gdk::DmabufTexture), оскільки GTK4 не має нативного віджета для рендерингу Vulkan.
Web / HTTP / Мережа
- гілка appWt4 розміщена на [GitHub, GitLab] - шаблон з інфраструктурою для швидкого старту реалізації Web-програми на основі Wt C++ фулстек фреймворку.
- гілка appBoostBeast розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки Web-програми з використанням швидкого HTTP сервера Beast від Boost.
- гілка appCURL розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням бібліотеки-клієнта CURL для завантажень даних з мережі і яка підтримує багато протоколів (включаючи HTTP).
Системи керування базами даних (СУБД) / SQL / NoSQL
- гілка appPgSQLxx розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням СУБД PostgreSQL.
- гілка appFirebird розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням СУБД Firebird через рідну клієнтську бібліотеку (fbclient).
- гілка appMySQLCppConn розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням СУБД MySQL.
- гілка appSQLiteCpp3 розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням СУБД SQLite через бібліотеку SQLiteCpp.
- гілка appMongoDBCpp4 розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням NoSQL СУБД MongoDB.
Візуалізація даних / Графіки / Діаграми
- гілка appMatPlotxx розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням MatPlot++ - бібліотеки для малювання графіків на основі програми gnuplot і Qt6.
- гілка appPLplot розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням PLplot - потужної бібліотеки генерації графіків котра використовується у наукових програмах з багатьма інтерфейсами для різних віконних систем і мов програмування, і можливостями експорту у найпопулярніші формати зображень (PNG, SVG, JPEG, GIF, PDF і інші).
- гілка appPGPLOT розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням PGPLOT - класичної бібліотеки наукової графіки, котра широко використовується у астрономії, інтегрованої через її інтерфейс мови C (cpgplot) і котра підтримує як оригінальну бібліотеку, так і її вільну заміну giza.
- гілка appQt6ChartView розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту візуалізації даних і малювання графіків безпосередньо у вікні Qt6 QML за допомогою вбудованого елемента ChartView з модуля QtCharts.
Карти
- гілка appGtkmm4LeafLet розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу з використанням Gtkmm-4 з WebKitGtk і картами LeafLet.
- гілка appQt6LeafLet розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу разом з Qt6/QML і WebView QML а також картами LeafLet.
- гілка appQt6QtLocation розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу що відображає мапу OpenStreetMap рідними засобами безпосередньо у вікні Qt6/QML за допомогою елемента Map з модуля Qt Location (рідний відповідник гілки appQt6LeafLet на основі WebView).
Компʼютерний зір / Обробка зображень
- гілка appOpenCV розміщена на [GitHub, GitLab] котра містить інфраструктуру для швидкого старту розробки застосунку з використанням бібліотеки компʼютерного зору OpenCV.
- гілка appCFITSIO розміщена на [GitHub, GitLab] яка містить загальні класи для генерації одинарного бінарного виконуваного файлу, що загортає бібліотеку CFITSIO у невеликий контролер з основними викликами формату FITS (астрономічний формат зображень) - створення, відкриття, читання і запис зображення та доступ до ключових слів заголовку - і зчитує у класі Application зображення FITS, задане параметром командного рядка
--image, звітуючи про нього через журнал проекту. Окремий компонент так само загортає бібліотеку WCSLIB, тому заголовок цього зображення також повідомляє, куди вказує його центр на небесній сфері.
Штучний інтелект / LLM
- гілка appCURLClaude розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу, що ставить Claude задане у командному рядку питання через Anthropic API і виводить отриману відповідь. Anthropic не постачає офіційного SDK для C++, тому гілка звертається до API напряму за допомогою бібліотек libcurl та nlohmann JSON і не містить жодної сторонньої обгортки API.
- гілка appCURLChatGPT розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу, що ставить ChatGPT задане у командному рядку питання через точку доступу responses OpenAI API і виводить отриману відповідь. OpenAI не постачає офіційного SDK для C++, тому гілка звертається до API напряму за допомогою бібліотек libcurl та nlohmann JSON і не містить жодної сторонньої обгортки API.
Системні шини / DBus
- гілка appSDBusCxxClient розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу з використанням бібліотеки sdbus-c++ від Kistler-Group для побудови клієнта сервісів розміщених на шині DBus.
- гілка appSDBusCxxServer розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу з використанням бібліотеки sdbus-c++ від Kistler-Group для побудови сервера на шині DBus.
- гілка appQt6QtDBusClient розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу що зчитує загальну системну інформацію зі служби systemd-hostnamed через шину DBus за допомогою рідного модуля Qt6 QtDBus і відображає її у вікні QML (відповідник гілки appSDBusCxxClient на основі sdbus-c++ для фреймворку Qt6).
- гілка appGtkmm4GDBusClient розміщена на [GitHub, GitLab] яка містить загальні інфраструктурні класи програми для генерації одинарного бінарного виконуваного файлу що зчитує загальну системну інформацію зі служби systemd-hostnamed через шину DBus за допомогою рідного стеку GLib GDBus через Gtkmm-4/giomm
Gio::DBusі виводить її у журнал застосунку (відповідник гілки appSDBusCxxClient на основі sdbus-c++ для фреймворку gtkmm4).