Содержание блога
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
- Скачайте и установите CMake. Ищите
cmake-x.x.x-windows-x86_64.msi в списке
- Нажимайте кнопки
Next > Next > Finish
- Откройте консоль (CMD) и проверьте запускается ли CMake:
- Если 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 и набрать команду:
- Примечание. ",3" означает, что будет открыта третья вкладка в диалоговом окне настроек:

- Проверьте, что MinGW доступен. Для этого откройте новую консоль, чтобы не неё загрузилась актуальная переменная среды Path. Открыть консоль можно через Win + R и ввода команды:
- В открывшемся терминале введите команду:
- Будет выведена версия 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:
- Создан EXE с именем "app.exe". Для его запуска здесь же в открытой консоли введите команду:
- В консоль будет выведен текст "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
- Теперь можно набирать очень быстро команды:
- После первого запуска команд их можно выбирать клавишами-стрелками в 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-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 |
|
|