Форум программистов, компьютерный форум, киберфорум
8Observer8
Войти
Регистрация
Восстановить пароль

Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE

Запись от 8Observer8 размещена 10.03.2026 в 13:07. Обновил(-а) 8Observer8 05.04.2026 в 16:32
Показов 3482 Комментарии 3
Метки bash, c, c++, cmake, си

Содержание блога

MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и MinGW. Для набора кода будем использовать: либо легковесный редактор кода Sublime Text 4, либо IDE Qt Creator Community - для отладки кода по шагам, либо можете скачать любой другой редактор кода, например, VSCode. Можете использовать легковесный редактор кода Nodepad++. Qt Creator Community устанавливается отдельно от фреймворка Qt из общедоступного репозитория на GitHub: https://github.com/qt-creator/qt-creator - установщики разных версий находятся на вкладке Release

Установка системы сборки CMake



  1. Скачайте и установите CMake. Ищите cmake-x.x.x-windows-x86_64.msi в списке
  2. Нажимайте кнопки Next > Next > Finish
  3. Откройте консоль (CMD) и проверьте запускается ли CMake:
    Bash
    1
    
    cmake --version
  4. Если CMake не найден, то добавьте путь к C:\Program Files\CMake\bin в переменную окружения PATH

Установка MinGW 13.1



  • Перейдите по ссылке: https://winlibs.com/
  • Прокрутите страницу вниз и найдите пункт "GCC 13.1.0 (with POSIX threads)"
  • Найдите подпункт "without LLVM/Clang/LLD/LLDB"
  • Нажмите на ссылку Zip archive:
  • Скаченный архив лучше извлечь в корень диска C, выбрав "Extract Here" (Извлечь сюда), чтобы на диске C была папка "mingw64"
  • Переименуйте "mingw64" в "mingw64_13.1"
  • Добавьте путь к папке "C:\mingw64_13.1\bin" в переменную окружения Path
  • Примечание. Диалоговое окно с Path можно открыть, если нажать Win + R и набрать команду:
    Bash
    1
    
    sysdm.cpl ,3
  • Примечание. ",3" означает, что будет открыта третья вкладка в диалоговом окне настроек:
  • Проверьте, что MinGW доступен. Для этого откройте новую консоль, чтобы не неё загрузилась актуальная переменная среды Path. Открыть консоль можно через Win + R и ввода команды:
    Bash
    1
    
    cmd
  • В открывшемся терминале введите команду:
    Bash
    1
    
    gcc --version
  • Будет выведена версия GCC - 13.1.0:
    Bash
    1
    2
    3
    4
    
    gcc (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 13.1.0
    Copyright (C) 2023 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE

Сборка "Hello World!" примера на Си из консоли



  • Создайте где-нибудь новую пустую папку под названием "hello-world-c"
  • Откройте эту папку в текстовом редакторе - например, в Sublime Text 4, Notepad++ или VS Code
  • Создайте внутри этой папки файл "CMakeLists.txt" и скопируйте в него следующий код:

    CMakeLists.txt

    Bash
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    cmake_minimum_required(VERSION 3.21)
    project(hello-world-c)
     
    # Устанавливаем стандарт C. Этот код обязательно должен быть до вызова add_executable(app)
    set(CMAKE_C_STANDARD 11)
    set(CMAKE_C_STANDARD_REQUIRED ON)
     
    # Задаем название будущего приложения (в Windows это будет app.exe, а в вебе было бы app.js / app.wasm)
    add_executable(app)
     
    # Добавляем исходный код к проекту
    target_sources(app
        PRIVATE
        src/main.c
    )
  • В проекте создайте папку "src", а в папке "src" файл "main.c" и скопируйте в него код:

    main.c

    C
    1
    2
    3
    4
    5
    6
    7
    
    #include <stdio.h>
     
    int main()
    {
        printf("Hello World!\n");
        return 0;
    }
  • Откройте консоль в папке проекта и введите команду конфигурирования проекта:

    Bash
    1
    
    cmake -G "MinGW Makefiles" -S . -B dist/win -DCMAKE_BUILD_TYPE=Debug
    , где элементы команды означают следующее:
    • cmake - команда CMake
    • -G "MinGW Makefiles" - используем MinGW
    • -S . - указываем, что источник "Source", то есть файл CMakeLists.txt находится в текущей папке
    • -B dist/win - указываем куда сохранять конфигурационные файлы и для этого мы указываем, что нужно создать папку "dist/win"
    • -DCMAKE_BUILD_TYPE=Debug - указываем, что сборка будет отладочная. Она больше чем Release, но Debug собирается быстрее (хотя для Desktop разницы в скорости сборки для маленьких проектов нет, а для WebAssembly разница огромная - пара секунд для Debug и 15 и более секунд на Release)
  • Введите команды для сборки приложения в EXE:
    Bash
    1
    
    cd dist\win
    Bash
    1
    
    cmake --build .
  • Создан EXE с именем "app.exe". Для его запуска здесь же в открытой консоли введите команду:
    Bash
    1
    
    app
  • В консоль будет выведен текст "Hello World!"
  • Примечание. Теперь вы можете менять код и сохранять на Ctrl+S, а в консоли достаточно будет нажать кнопку-стрелку вверх, чтобы выбрать команду "cmake --build ." и нажать Enter. Команда конфигурирования выполняется только один раз. Если вы куда-то перенесёте папку "hello-world-c" или переименуете её, то нужно будет удалить папку "dist" и сделать конфигурирование снова той же командой:
    Bash
    1
    
    cmake -G "MinGW Makefiles" -S . -B dist/win -DCMAKE_BUILD_TYPE=Debug
  • Создайте три батника, чтобы проще было делать конфигурирование, сборку и запуск приложения:

    config-exe.bat

    Bash
    1
    
    cmake -G "MinGW Makefiles" -S . -B dist/win -DCMAKE_BUILD_TYPE=Debug
    build-exe.bat

    Bash
    1
    2
    3
    
    cd dist\win
    cmake --build .
    cd ..\..
    run-exe.bat

    Bash
    1
    
    dist\win\app
  • Теперь можно набирать очень быстро команды:

    Bash
    1
    
    config-exe
    Bash
    1
    
    build-exe
    Bash
    1
    
    run-exe
  • После первого запуска команд их можно выбирать клавишами-стрелками в CMD. Например, изменили что-то в коде и клавишами-стрелками в CMD выбрали "build-exe", а после сборки выбрали "run-exe"

Сборка "Hello World!" примера в Qt Creator



Примечание. Пошаговая инструкция для установки Qt Creator: Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt

  • Скачайте и установите Qt Creator версии 18 по ссылке. Установщик вы найдёте в списке "Assets"
  • Запустите Qt Creator, набрав в поиске программ "Qt Creator"
  • В левом верхнем углу нажмите "File" > "Open File or Project..."
  • В открывшемся диалоговом окне перейдите в папку "hello-world-c" и выберите файл "CMakeLists.txt"
  • Проект будет открыт в Qt Creator. Вы может запустить проект на выполнение нажав зелёный треугольник в левом нижнем углу
  • Поставьте точку остановка, кликнув мышкой слева от номера строки кода и нажмите зелёный треугольник с жуком в левом нижнем углу. Запустится отладка по шагам. Вы можете нажимать кнопки на панели инструментов - например, кнопку для выполнения кода без захода внутрь функции или с заходом внутрь функции

Переделываем Си-проект в C++



  • Сделайте копию папки "hello-world-c" и переименуйте её в "hello-world-cpp"
  • В этом новом проекте удалите папку "dist"
  • Откройте папку "hello-world-cpp" в каком-нибудь редакторе кода, например, в Sublime Text 4, Nodepad++, либо в IDE Qt Creator ("File" > "Open File or Project" -> выберите файл "CMakeLists.txt")
  • В редакторе кода или IDE откройте файл "CMakeLists.txt" для редактирования
  • Измените имя проекта в строке:

    Было:
    Bash
    1
    
    project(hello-world-c)
    Стало:
    Bash
    1
    
    project(hello-world-cpp)
  • Замените стандарт Си на стандарт C++:

    Было:
    Bash
    1
    2
    
    set(CMAKE_C_STANDARD 11)
    set(CMAKE_C_STANDARD_REQUIRED ON)
    Стало:
    Bash
    1
    2
    3
    
    # Устанавливаем стандарт C++
    set(CMAKE_CXX_STANDARD 20)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
  • Измените расширение файла исходного кода:

    Было:
    Bash
    1
    2
    3
    4
    
    target_sources(app
        PRIVATE
        src/main.c
    )
    Стало:
    Bash
    1
    2
    3
    4
    
    target_sources(app
        PRIVATE
        src/main.cpp
    )
  • Переименуйте файл "src/main.c" в "src/main.cpp"
  • Введите следующие команды в консоли для конфигурирования, сборки и запуска EXE:

    Bash
    1
    2
    3
    
    config-exe
    build-exe
    run-exe

Миниатюры

Нажмите на изображение для увеличения
Название: 8fae67f8-8b25-4ae3-9046-a15581dcbe56.png
Просмотров: 1908
Размер:	17.7 Кб
ID:	11716
Нажмите на изображение для увеличения
Название: 6d0de7c9-7ddd-4680-a00b-27392beb656b.png
Просмотров: 1681
Размер:	21.9 Кб
ID:	11730
Вложения
Тип файла: zip hello-world-c.zip (1.6 Кб, 74 просмотров)
Тип файла: zip hello-world-cpp.zip (1.7 Кб, 80 просмотров)
Метки bash, c, c++, cmake, си
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 3
Комментарии
  1. Старый комментарий
    Добавил пошаговою инструкцию "Переделываем Си-проект в C++"
    Запись от 8Observer8 размещена 10.03.2026 в 13:21 8Observer8 вне форума
  2. Старый комментарий
    Наряду с финальным проектом на C, прикрепил также финальный проект на C++
    Запись от 8Observer8 размещена 10.03.2026 в 14:04 8Observer8 вне форума
  3. Старый комментарий
    Запись от 8Observer8 размещена 05.04.2026 в 16:29 8Observer8 вне форума
 
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru