Настройка компилятора и свойств сборки
В интегрированной среде разработки все сведения, необходимые для сборки проекта, предоставляются в виде свойств. Эти сведения включают в себя имя приложения, расширение (например, DLL, EXE, LIB), параметры компилятора, параметры компоновщика, параметры отладчика, настраиваемые этапы сборки и многие другие компоненты. Как правило, для просмотра и изменения этих свойств используются страницы свойств. Чтобы получить доступ к страницам свойств, выберите >»Свойства проекта» в главном меню или щелкните правой кнопкой мыши узел проекта в Обозреватель решений и выберите «Свойства».
Свойства по умолчанию
При создании проекта система задает значения для различных свойств. Значения по умолчанию варьируются в зависимости от типа проекта и параметров, выбранных в мастере приложений. Например, проект ATL имеет свойства, связанные с ФАЙЛАми MIDL, но эти свойства отсутствуют в базовом консольном приложении. В области «Общие» на страницах свойств отображаются свойства по умолчанию:
Применение свойств к конфигурациям сборок и целевым платформам
Некоторые свойства, такие как имя приложения, применяются ко всем вариантам сборки и целевым платформам, будь то отладка или сборка выпуска. Однако большинство свойств зависит от конфигурации. Чтобы создать правильный код, компилятор должен знать как конкретную платформу, на которой будет выполняться программа, так и на каких конкретных параметрах компилятора следует использовать. Поэтому при установке свойства важно обратить внимание на конфигурацию и платформу, к которой должно применяться новое значение. Должно ли оно применяться только к сборкам Win32 отладки или к отладке ARM64 и отладке x64? Например, для свойства оптимизации по умолчанию задано значение «Максимальная скорость» (/O2) в конфигурации выпуска, но она отключена в конфигурации отладки.
Вы всегда можете просмотреть и изменить конфигурацию и платформу, к каку следует применить значение свойства. На следующем рисунке показаны страницы свойств с элементами управления конфигурацией и сведениями о платформе в верхней части экрана. Если свойство оптимизации задано здесь, оно будет применяться только к сборкам Win32 отладки, текущей активной конфигурации, как показано красными стрелками.

На следующем рисунке показана та же страница свойств проекта, но конфигурация изменена на выпуск. Обратите внимание на другое значение для свойства «Оптимизация». Кроме того, обратите внимание, что активной конфигурацией по-прежнему является отладка. Здесь вы можете задать свойства для любой конфигурации, а не только активной.

Целевые платформы
Целевая платформа относится к типу устройства и операционной системы, на которую будет работать исполняемый файл. Вы можете создать проект для нескольких платформ. Доступные целевые платформы для проектов C++ зависят от типа проекта. Они включают в себя, но не ограничиваются Win32, x64, ARM, ARM64, Android и iOS. Целевая платформа X86, которую вы могли заметить в Configuration Manager, идентична Win32 в собственных проектах C++. Win32 означает 32-разрядную версию Windows, а x64 — 64-разрядную. Дополнительные сведения об этих двух платформах см. в разделе Запуск 32-разрядных приложений.
Значение любой целевой платформы ЦП , которое может отображаться в Configuration Manager , не влияет на собственные проекты C++. Он относится только к C++/CLI и другим типам проектов .NET. Дополнительные сведения см. в разделе /CLRIMAGETYPE (Указание типа образа СРЕДЫ CLR).
Дополнительные сведения настройке свойств отладочной сборки см. в следующих разделах:
- Параметры проекта для конфигурации отладки C++
- Параметры отладчика и подготовка
- Подготовка к отладке: типы проектов Visual C++
- Указание файлов символов (PDB) и файлов с исходным кодом в отладчике Visual Studio
Параметры компилятора и компоновщика C++
Параметры компилятора и компоновщика C++ находятся в узлах C/C++ и Компоновщик на панели слева в разделе Свойства конфигурации. Эти параметры преобразуют непосредственно в параметры командной строки, которые будут переданы компилятору. Чтобы ознакомиться с документацией по конкретному параметру, выберите параметр в центральной области и нажмите клавишу F1. Кроме того, можно просмотреть документацию по всем параметрам компилятора MSVC и параметрам компоновщика MSVC.
В диалоговом окне Страницы свойств отображаются только страницы свойств, относящиеся к текущему проекту. Например, если у проекта нет .idl файла, страница свойств MIDL не отображается. Дополнительные сведения о параметрах на каждой странице свойств см. в разделе «Страницы свойств» (C++).
Значения каталога и пути
MSBuild поддерживает использование констант во время компиляции для определенных строковых значений, таких как каталоги и пути, называемые макросами. Макрос может ссылаться на значение, определенное в Visual Studio или системе MSBuild, или на определяемое пользователем значение. Макросы выглядят как $(macro-name) или %(item-macro-name) . Они представлены на страницах свойств, где можно ссылаться на них и изменять их с помощью редактора свойств. Используйте макросы вместо жестко закодированных значений, таких как пути к каталогу. Макросы упрощают совместное использование параметров свойств между компьютерами и между версиями Visual Studio. Кроме того, вы можете лучше убедиться, что параметры проекта правильно участвуют в наследовании свойств.
На следующем рисунке показаны страницы свойств для проекта Visual Studio C++. В левой области выбрано правилоКаталоги VC++, а в правой области отображаются свойства, связанные с этим правилом. Значения свойств часто являются макросами, такими как $(VC_SourcePath) :

Редактор свойств можно использовать для просмотра значений всех доступных макросов.
Предустановленные макросы
- Глобальные макросы:
Глобальные макросы применяются ко всем элементам в конфигурации проекта. Глобальный макрос имеет синтаксис $(name) . Пример глобального макроса — свойство $(VCInstallDir) , которое сохраняет корневой каталог установки Visual Studio. Глобальный макрос соответствует элементу PropertyGroup в MSBuild. - Макросы элементов
Макросы элементов имеют синтаксис %(name) . В случае файла макрос элемента применяется только к этому файлу — для примера можно использовать %(AdditionalIncludeDirectories) , чтобы определить каталоги, которые применяются только к конкретному файлу. Этот тип макроса элемента соответствует метаданным ItemGroup в MSBuild. При использовании в контексте конфигурации проекта макрос элемента применяется ко всем файлам определенного типа. Например, свойство конфигурации C/C++ Определения препроцессора может принимать макрос элемента %(PreprocessorDefinitions) , который применяется ко всем CPP-файлам в проекте. Этот тип макроса элемента соответствует метаданным ItemDefinitionGroup в MSBuild. Дополнительные сведения см. в разделе Определения элементов.
Пользовательские макросы
Вы можете создавать пользовательские макросы для использования в качестве переменных в сборках проекта. Например, можно создать пользовательский макрос, предоставляющий значение пользовательскому шагу сборки или пользовательскому средству сборки. Пользовательский макрос — это пара «имя-значение». Для доступа к этому значению в файле проекта используется нотация $(name) .
Пользовательский макрос хранится на странице свойств. Если проект еще не содержит лист свойств, его можно создать, выполнив действия, описанные в разделе «Общий доступ» или повторное использование параметров проекта Visual Studio.
Создание пользовательского макроса
- Откройте окно Диспетчер свойств. (В строке меню выберите Просмотр>диспетчера свойств или просмотра> другого диспетчера свойств Windows>.) Откройте контекстное меню для листа свойств (его имя заканчивается) .user и выберите пункт «Свойства«. Откроется диалоговое окно Страницы свойств для данной страницы свойств.
- В левой области диалогового окна выберите Пользовательские макросы. В правой области нажмите кнопку Добавить макрос, чтобы открыть диалоговое окно Добавление пользовательского макроса.
- В диалоговом окне задайте имя и значение для макроса. Кроме того, можно установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Редактор свойств
Редактор свойств можно использовать для изменения некоторых строковых свойств и выбора макросов в качестве значений. Чтобы открыть редактор свойств, выберите свойство на странице свойств, а затем нажмите кнопку со стрелкой вниз справа. Если раскрывающийся список содержит , его можно выбрать для отображения редактора свойств для этого свойства.

В редакторе свойств можно нажать кнопку Макросы, чтобы просмотреть доступные макросы и их текущие значения. На следующем рисунке показан редактор свойств для свойства Дополнительные каталоги включаемых файлов после нажатия кнопки Макросы. Если выбрано поле «Наследование от родительского или проекта» по умолчанию проверка и добавляется новое значение, оно добавляется к любым значениям, которые в настоящее время наследуются. Если снять флажок, новое значение заменяет наследуемые значения. В большинстве случаев следует не снимать этот флажок.

Добавление каталога включения к набору каталогов по умолчанию
При добавлении каталога включения в проект важно не переопределить все каталоги по умолчанию. Правильным способом добавления каталога является добавление нового пути, например » C:\MyNewIncludeDir\ «, а затем добавление $(IncludePath) макроса в значение свойства.
Быстрый просмотр и поиск всех свойств
Страница свойств «Все параметры» (в узле «Свойства>конфигурации C/C++» в диалоговом окне «Страницы свойств») предоставляет быстрый способ просмотра и поиска свойств, доступных в текущем контексте. Она имеет специальное поле поиска и простой синтаксис, который помогает отфильтровать результаты.
Без префикса:
поиск только в именах свойств (подстрока без учета регистра).
‘ / ‘ или ‘ — ‘:
поиск только в параметрах компилятора (префикс без учета регистра)
v :
поиск только в значениях (подстрока без учета регистра).
Задание переменных среды для сборки
Компилятор MSVC (cl.exe) распознает определенные переменные среды, в частности LIB , LIBPATH PATH и INCLUDE . При сборке с помощью интегрированной среды разработки свойства, заданные на странице свойств каталогов VC++, используются для задания этих переменных среды. Если LIB значения LIBPATH и INCLUDE значения уже заданы, например командная строка разработчика, они заменяются значениями соответствующих свойств MSBuild. Затем сборка добавляет значение свойства PATH исполняемых каталогов VC++ в . Для задания пользовательской переменной среды можно создать пользовательский макрос и затем установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Задание переменных среды для сеанса отладки
В левой области диалогового окна Страницы свойств проекта разверните узел Свойства конфигурации и выберите пункт Отладка.
В правой области измените параметры проекта Среда или Объединение среды, а затем нажмите кнопку ОК.
В этом разделе
Совместное или повторное использование параметров проекта Visual Studio
.props Создание файла с пользовательскими параметрами сборки, которые можно использовать или использовать повторно.
Наследование свойств проекта
Описывает порядок оценки переменных .props , .targets .vcxproj файлов и среды в процессе сборки.
Изменение свойств и целевых объектов без изменения файла проекта
Создание временных параметров сборки без изменения файла проекта.
Как выбрать и настроить компиляторы C++ вручную в Windows?
System Modeler позволяет компилировать модели с помощью компилятора C ++ по вашему выбору. Вы можете установить автоматически обнаруживаемый компилятор или вручную настроить и установить собственный компилятор.
- Чтобы перейти в меню «Options», выберите «Tools» ► «Options».

- Выберите «Global» ► «Compiler».

- Если желаете выбрать уже сконфигурированный компилятор, выберите идентификатор компилятора в раскрывающемся меню «Selected compiler».
- В противном случае добавьте новую конфигурацию компилятора в System Modeler:
- Выберите «Custom» в раскрывающемся меню «Selected compiler».

- Выберите имя поддерживаемого, выбранного вами компилятора в раскрывающемся меню «Compiler».
- Если раскрывающееся меню «Version» становится активным, выберите версию компилятора из предложенных вариантов.
- Нажав кнопку «Browse», появится диалоговое окно для выбора папки, содержащей конкретный исполняемый файл компилятора.

- Выберите нужный файл в диалоговом окне и нажмите «Open». Возможные расположения включают:
- Для файла VsDevCmd.bat Visual Studio 2017:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat - Для файла VsDevCmd.bat Visual Studio 2019:
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat
Путь к исполняемому файлу компилятора можно найти в “Path to ”.

- Выберите «Custom» в раскрывающемся меню «Selected compiler».
- Нажмите «Verify Compiler», чтобы убедиться, что System Modeler успешно обнаруживает сконфигурированный компилятор. В случае успеха появится диалоговое окно «Compiler verification succeeded».

Компилятор MSVC из командной строки (без IDE) для начинающих
Ранее я написал ряд постов, посвященных изучению языка программирования C++ по учебнику Роберта Лафоре. В тех статьях я разбирал примеры и упражнения и выполнял их в интегрированной среде разработки (IDE), в качестве которой использовал «Microsoft Visual Studio». В то время я использовал бесплатную версию этой среды «Visual Studio Community 2017», а сейчас использую «Visual Studio Community 2022» (версия 17.5.3 от 21 марта, самая свежая на сегодня).
Начинающим изучать язык программирования C++ вполне себе можно стартовать с установки этой среды и работе в ней. (Следует иметь в виду, что у среды «Microsoft Visual Studio» есть ряд отличных альтернатив, я вовсе не хочу сказать, что изучение языка C++ в среде «Microsoft Visual Studio» — это единственный путь для начинающего.) У этой среды есть как свои достоинства, так и свои недостатки. Самый большой ее недостаток, на мой взгляд, в том, что она очень большая и неповоротливая, требует достаточно мощного компьютера. При этом бо́льшая часть инструментов этой среды начинающими не используется.
Одной из хороших альтернатив работе в интегрированной среде разработки для начинающего является работа с компилятором языка C++ из командной строки. Этот способ подходит тем, у кого слабый компьютер, который не тянет работу с большой IDE вроде «Microsoft Visual Studio». Бывают и другие причины для выбора работы из командной строки. (В принципе, на мой взгляд, начинающему изучать язык программирования C++ имеет смысл поработать и в IDE, и научиться работать из командной строки.)
Так же, как в случае работы в интегрированной среде разработки, для работы с кодом программ на языке C++ из командной строки есть ряд альтернатив, но в этом посте я буду описывать работу с компилятором «Microsoft Visual C++», который больше известен под аббревиатурой «MSVC».
Microsoft C++ Build Tools
Для работы из командной строки компания «Microsoft» предлагает набор инструментов (программ и скриптов) для сборки (Build Tools), который называется «Microsoft C++ Build Tools» (он же «Visual Studio Build Tools» или «Build Tools for Visual Studio» и тому подобное). Этот набор инструментов включает в том числе упомянутый выше компилятор «MSVC» и другие нужные для сборки кода на языке C++ инструменты.
В общем, набор инструментов «Microsoft C++ Build Tools» можно загрузить отдельно, либо его же можно загрузить в составе дистрибутива среды «Microsoft Visual Studio», если при установке этой среды выбрать рабочую нагрузку (workload), предназначенную для работы с кодом на языке C++ (например, «Desktop development with C++» или что-то вроде этого, название может слегка отличаться или быть на другом языке общения). Это значит, что в командной строке вы получаете те же самые инструменты, которые использует интегрированная среда разработки.
Набор инструментов «Microsoft C++ Build Tools» вы тоже можете использовать бесплатно (как и версию «Community» среды «Microsoft Visual Studio»), но там есть ограничения. Насколько я понимаю, для обучения и разработки программ с открытым исходным кодом этот набор инструментов точно можно использовать бесплатно (тут подробнее). Вот откуда можно загрузить к себе на компьютер этот набор инструментов для использования без IDE:
У меня, как я упомянул в начале поста, установлена среда «Visual Studio Community 2022» с рабочей нагрузкой, предназначенной для работы с кодом на языке C++. Поэтому в моем случае нет необходимости устанавливать набор инструментов «Microsoft C++ Build Tools» отдельно. Я уже и так имею возможность работать с компилятором «MSVC» как из IDE, так и из командной строки.
Порядок запуска компилятора «MSVC» из командной строки
Компания «Microsoft» не рекомендует запускать инструменты из набора «Microsoft C++ Build Tools» из обычной программы-оболочки с командной строкой, как мы привыкли, так как для этого набора инструментов задействуется много разных переменных среды, которые должны быть правильно настроены. По крайней мере, начинающим этого точно делать не сто́ит.
Для запуска набора инструментов «Microsoft C++ Build Tools» предлагается использовать предварительно настроенные нужным образом версии программ-оболочек, которые можно запустить из меню кнопки «Пуск» операционной системы «Windows 10». В этом меню нужные пункты будут присутствовать, если вы установили набор инструментов «Microsoft C++ Build Tools» либо отдельно, либо в составе интегрированной среды разработки «Microsoft Visual Studio».
У меня в меню кнопки «Пуск» операционной системы присутствуют два подходящих пункта-ярлыка. Их можно быстро найти, набрав в поиске операционной системы (кнопка с увеличительным стеклом рядом с кнопкой «Пуск» на панели задач) слово «developer»:
– Developer Command Prompt for VS 2022
– Developer PowerShell for VS 2022
Первый из них использует программу-оболочку «cmd.exe», а второй — программу-оболочку «Windows PowerShell». Можно запустить любой из этих ярлыков и далее уже работать в открывшейся программе-оболочке, там всё будет настроено так, как следует.
Оба эти ярлыка в качестве хоста используют программу-«эмулятор терминала» «Windows Console», так как я работаю в операционной системе «Windows 10». Но мне уже полюбилась программа-«эмулятор терминала» «Windows Terminal» (предполагается, что «Windows Terminal» заменит «Windows Console» в операционной системе «Windows 11», но у меня нет доступа к «Windows 11», поэтому я не знаю, как оно там), поэтому я предпочитаю запустить ее и открыть программу-оболочку «Developer PowerShell for VS 2022» уже из нее. (У меня, кстати, есть ряд постов про программу-«эмулятор терминала» «Windows Terminal».)
К слову, программу «Windows Terminal» можно загрузить к себе на компьютер бесплатно и она «увидит» все имеющиеся на компьютере программы-оболочки, после чего любую из них можно будет запустить из программы «Windows Terminal».
На практике
Создаю новую папку «test» в местоположении «C:\Users\Илья\source\repos» с помощью программы «Проводник Windows». В принципе, отдельную папку можно не создавать, но я привык для каждой новой задачи (проекта) создавать новую папку, это удобно и это популярный метод работы. Также отмечу, что папку можно создать в любом месте, но я работаю с кодом программ в указанном выше местоположении, мне так удобно.
Перехожу в программе «Проводник Windows» в созданную папку «test» в местоположении «C:\Users\Илья\source\repos». С помощью редактора кода (я использую «Notepad++» или «VS Code», они оба хороши для небольших программ) создаю текстовый файл «first.cpp» в кодировке UTF-8 с сигнатурой (она же — метка BOM). (К сожалению, компилятор «MSVC» принимает файлы в кодировке UTF-8 только с меткой BOM, тут про это подробнее.) Сохраняю в этом файле следующий код (из учебника Лафоре, с добавленными мною измененениями):
#include // для функции _setmode #include // для константы _O_U16TEXT #include using namespace std; int main() < // переключение стандартного потока вывода в формат Юникода _setmode(_fileno(stdout), _O_U16TEXT); wcout
Из контекстного меню (открывается щелчком правой кнопки мыши) запускаю программу-«эмулятор терминала» «Windows Terminal» и создаю в ней новую вкладку с нужной программой-оболочкой:

Как видно на иллюстрации выше, список доступных программ-оболочек можно открыть, нажав на кнопку со значком уголка, направленного вниз, или нажав соответствующее сочетание клавиш на клавиатуре. (При запуске программы «Windows Terminal» автоматически запускается вкладка с программой-оболочкой по умолчанию, у меня это программа-оболочка «PowerShell». Но в данном случае она не нужна и эту первую вкладку можно закрыть.) Вот что получилось:

Далее работаем из командной строки этой программы-оболочки. Сначала предлагается проверить работоспособность компилятора «MSVC». Исполняемый файл этого компилятора называется «cl.exe», поэтому для его запуска нужно использовать команду «cl»:
PS C:\Users\Илья\source\repos\test> cl Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.35.32216.1 для x64 (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. использование: cl [ параметр. ] имя_файла. [ /link параметр_компоновки. ]
Приведенный в блоке кода выше выведенный компилятором текст не содержит сообщений об ошибках, а содержит только информацию о владельце программы и короткую инструкцию по использованию компилятора. Значит, все настройки правильные, можно начинать работу.
Создадим из нашей маленькой программы «first.cpp» исполняемый файл:
PS C:\Users\Илья\source\repos\test> cl /EHsc "first.cpp" Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.35.32216.1 для x64 (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. first.cpp Microsoft (R) Incremental Linker Version 14.35.32216.1 Copyright (C) Microsoft Corporation. All rights reserved. /out:first.exe first.obj
В нашей папке «test» появилось два новых файла: «first.obj» и «first.exe». Как известно, процесс сборки программы из исходного кода в исполняемый файл обычно проходит в два этапа: 1) компиляция (выполняется компилятором); 2) «линковка», она же «компоновка» (выполняется «линкером», он же — «компоновщик»). На первом этапе из исходного кода (у нас — единственный текстовый файл «first.cpp») создается объектный файл (в нашем случае — «first.obj»). На втором этапе из объектного файла создается исполняемый файл.
Как видно из результата работы компилятора выше, он сначала делает свою работу (создает объектный файл «first.obj»), а затем автоматически запускает линковщик, который создает из объектного файла исполняемый файл. В принципе, компилятор можно заставить не запускать линковщик автоматически с помощью ключа /c . Тогда нужно будет запускать линковщик отдельно, вторым этапом, с помощью команды «link» (исполняемый файл линковщика называется «link.exe»). Такой подход бывает нужен в сложных случаях.
Ключ /EHsc определяет модель обработки ошибок, которая должна быть использована при компиляции. Это рекомендуемый ключ для начинающих.
Вообще у компилятора и компоновщика огромное количество разнообразных ключей, с помощью которых можно выполнить бесчисленное количество разных настроек. Вот тут можно посмотреть на все ключи компилятора «MSVC», перечисленные по алфавиту, чтобы иметь представление о масштабах этого кошмара. Рассмотрение этих ключей, или хотя бы самых полезных из них выходит за рамки этого поста.
Размеры полученных файлов:
PS C:\Users\Илья\source\repos\test> dir Каталог: C:\Users\Илья\source\repos\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 04.04.2023 15:16 423 first.cpp -a---- 04.04.2023 15:52 231424 first.exe -a---- 04.04.2023 15:52 122560 first.obj
Как видно из блока кода, приведенного выше, исполняемый файл «first.exe» получился просто огромного размера, если соотнести размер в 226 Кб с тем, что эта программа делает (всего лишь выводит в окно консоли короткую строку). К примеру, если этот же исходный код в файле «first.cpp» скомпилировать в исполняемый файл в среде «Microsoft Visual Studio», то у меня получился исполняемый файл размером 12 Кб, что почти в 19 раз меньше.
Такая большая разница в размерах исполняемого файла получается из-за того, что среда «Microsoft Visual Studio» использует ключи компилятора, предназначенные для оптимизации размера исполняемого файла. Тема оптимизации — это тема не для начинающих. Кому интересно, можно начать изучение этого вопроса отсюда. На период изучения языка C++ по учебнику на размер исполняемого файла можно не обращать внимания. Но при создании реальных полезных программ вопрос оптимизации придется изучить досконально.
Запуск исполняемого файла на выполнение:
PS C:\Users\Илья\source\repos\test> .\first У каждой эпохи свой язык
Как видим из блока кода выше, всё в порядке, программа выполнила свою работу, вывела в окно консоли нужную строку на русском языке.
Отмечу, что приведенный выше исходный код в файле «first.cpp» не является кроссплатформенным, но такая задача не ставилась и этот вопрос выходит за рамки данного поста.
Полезная статья, один из главных источников информации для данного поста: «Walkthrough: Compiling a Native C++ Program on the Command Line» (по-русски «Быстрое ознакомление: компиляция программы на C++ в командной строке»).
Как узнать какой компилятор в visual studio
Рассмотрим создание первой простейшей программы на языке Си с помощью компилятора GCC , который на сегодняшний день является одим из наиболее популярных компиляторов для Cи и который доступен для разных платформ. Более подобному информацию о GCC можно получить на официальном сайте проекта https://gcc.gnu.org/.
Набор компиляторов GCC распространяется в различных версиях. Для Windows одной из наиболее популярных версий является пакет средств для разработки от некоммерческого проекта MSYS2 . Следует отметить, что для MSYS2 требуется 64-битная версия Windows 7 и выше (то есть Vista, XP и более ранние версии не подходят)
Итак, загрузим программу установки MSYS2 с официального сайта MSYS2:

После загрузки запустим программу установки:

На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:\msys64:

Оставим каталог установки по умолчанию (при желании можно изменить). На следующем шаге устанавливаются настройки для ярлыка для меню Пуск, и затем собственно будет произведена установка. После завершения установки нам отобразить финальное окно, в котором нажмем на кнопку Завершить

После завершения установки запустится консольное приложение MSYS2.exe. Если по каким-то причинам оно не запустилось, то в папке установки C:/msys64 надо найти файл usrt_64.exe :

Теперь нам надо установить собственно набор компиляторов GCC. Для этого введем в этом приложении следующую команду:
pacman -S mingw-w64-ucrt-x86_64-gcc
Для управления пакетами MSYS2 использует пакетный менеджер Packman. И данная команда говорит пакетному менелжеру packman установить пакет mingw-w64-ucrt-x86_64-gcc , который представляет набор компиляторов GCC (название устанавливаемого пакета указывается после параметра -S ).

и после завершения установки мы можем приступать к программированию на языке Си. Если мы откроем каталог установки и зайдем в нем в папку C:\msys64\ucrt64\bin , то найдем там все необходимые файлы компиляторов:

В частности, файл gcc.exe как раз и будет представлять компилятор для языка Си.
Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого можно в окне поиска в Windows ввести «изменение переменных среды текущего пользователя»:

Нам откроется окно Переменныех среды:

И добавим путь к компилятору C:\msys64\ucrt64\bin :

Чтобы убедиться, что набор компиляторов GCC успешно установлен, введем следующую команду:
gcc --version
В этом случае нам должна отобразиться версия компиляторов

Создание первой программы
Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода. Можно взять распространенный редактор Visual Studio Code или даже обычный встроенный Блокнот.
Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c .

В моем случае файл hello.c находится в папке C:\c.
Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:
#include // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main < // начало функции printf("Hello METANIT.COM!\n"); // выводим строку на консоль return 0; // выходим из функции >// конец функции
Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка
#include
Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.
Далее идет определение функции int main(void) . Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается выполнение приложения.
Ключевое слово int в определении функции int main(void) говорит о том, что функция возвращает целое число. А слово void в скобках указывает, что функция не принимает параметров.
Тело функции main заключено в фигурные скобки <>. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello METANIT.COM!».
В конце осуществляем выход из функции с помощью оператора return . Так как функция должна возвращать целое число, то после return указывается число 0. Ноль используется в качестве индикатора успешного завершения программы.
После каждого действия в функции ставятся точка с запятой.

Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:
cd C:\c
Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello.c:
gcc hello.c
После этого будет скомпилирован исполняемый файл, который в Windows по умолчанию называется a.exe . И мы можем обратиться к этому файлу
a.exe
и в этом случае консоль выведет строку «Hello METANIT.COM!», собственно как и прописано в коде.
Стоит отметить, что мы можем переопределить имя компилируемого файла с помощью флага -o и передав ему имя файла, в который будет компилироваться программа. Например:
gcc hello.c -o hello.exe
В этом случае программа будет компилироваться в файл hello.exe , который мы также запустить.

Чтобы не приходилось вводить две команды: одну для компиляции программы и другую для ее запуска, мы можем объединить команды:
gcc hello.c -o hello.exe & hello
Эта команда сначала компилирует код в файл hello.exe, а потом сразу запускает его.
