Выбор компилятора visual studio
Перед написанием нашей первой программы мы еще должны кое-что узнать.
Теория
Во-первых, несмотря на то, что код ваших программ находится в файлах .cpp, эти файлы добавляются в проект. Проект содержит все необходимые файлы вашей программы, а также сохраняет указанные вами настройки вашей IDE. Каждый раз, при открытии проекта, он запускается с того момента, на котором вы остановились в прошлый раз. При компиляции программы, проект говорит компилятору и линкеру, какие файлы нужно скомпилировать, а какие связать. Стоит отметить, что файлы проекта одной IDE не будут работать в другой IDE. Вам придется создать новый проект (в другой IDE).
В-третьих, при создании нового проекта большинство IDE автоматически добавят ваш проект в рабочее пространство. Рабочее пространство — это своеобразный контейнер, который может содержать один или несколько связанных проектов. Несмотря на то, что вы можете добавить несколько проектов в одно рабочее пространство, все же рекомендуется создавать отдельное рабочее пространство для каждой программы. Это намного упрощает работу для новичков.
Традиционно, первой программой на новом языке программирования является всеми известная программа «Hello, world!». Мы не будем нарушать традиции 🙂
Пользователям Visual Studio
Для создания нового проекта в Visual Studio 2019, вам нужно сначала запустить эту IDE, затем выбрать "Файл" > "Создать" > "Проект" :
Дальше появится диалоговое окно, где вам нужно будет выбрать "Консольное приложение Windows" из вкладки "Visual C++" и нажать "ОК" :
Также вы можете указать имя проекта (любое) и его расположение (рекомендую ничего не менять) в соответствующих полях.
В текстовом редакторе вы увидите, что уже есть некоторый текст и код — удалите его, а затем напечатайте или скопируйте следующий код:
Набор инструментов платформы
Набор инструментов платформы состоит из компилятора C++ (cl.exe) и компоновщика (link.exe) вместе со стандартными библиотеками C/C++. Studio 2015, Visual Studio 2017 и Visual Studio 2019 совместимы на уровне двоичного кода. Об этом свидетельствует основной номер версии набора инструментов, который остался равным 14. Проекты, скомпилированные в Visual Studio 2019 или Visual Studio 2017 обратно совместимы на уровне ABI с проектами, скомпилированными в Visual Studio 2017 или Visual Studio 2015. Дополнительный номер версии обновляется на 1 для каждой версии с выпуска Visual Studio 2015:
- Visual Studio 2015: v140
- Visual Studio 2017: v141
- Visual Studio 2019: v142
Целевая платформа (только для проектов C++/CLI)
Создавая пользовательские наборы инструментов платформы, можно расширить поддержку целевой платформы. Дополнительные сведения см. в блоге по Visual C++ Нативное многоплатформенное нацеливание в C++ .
В обозревателе решений Visual Studio выберите проект. В строке меню откройте меню Проект и выберите Выгрузить проект. Это выгружает файл проекта (VCXPROJ) для вашего проекта.
Проект на языке C++ не может быть загружен, пока вы редактируете файл проекта в Visual Studio. Однако можно использовать другой редактор, например блокнот, чтобы изменить файл проекта, пока проект загружен в Visual Studio. Visual Studio определяет, что файл проекта был изменен и отображает запрос о необходимости перезагрузить проект.
В строке меню последовательно выберите Файл, Открыть, Файл. В диалоговом окне Открыть файл перейдите к папке проекта и откройте файл проекта (с расширением VCXPROJ).
Сохраните изменения и закройте редактор.
В разделе Обозреватель решений откройте контекстное меню своего проекта и выберите Перезагрузить проект.
Изменение набора инструментов платформы
В диалоговом окне выберите страницу свойств Свойства конфигурации > Общие.
На странице свойств щелкните Набор инструментов платформы и выберите необходимый набор инструментов из раскрывающегося списка. Например, если вы установили набор инструментов Visual Studio 2010, выберите Visual Studio 2010 (версия 100) для использования в проекте.
В интегрированной среде разработки все сведения, необходимые для сборки проекта, представлены в виде свойств. Эти сведения включают в себя имя приложения, расширение (например, DLL, EXE, LIB), параметры компилятора, параметры компоновщика, параметры отладчика, настраиваемые этапы сборки и многие другие компоненты. Как правило, для просмотра и изменения этих свойств используются страницы свойств. Чтобы перейти к страницам свойств, в главном меню выберите Проект > Свойства имя_проекта или щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите пункт Свойства.
Свойства по умолчанию
При создании проекта система задает значения для различных свойств. Значения по умолчанию варьируются в зависимости от типа проекта и параметров, выбранных в мастере приложений. Например, проект ATL имеет свойства, относящиеся к файлам MIDL, но в базовом консольном приложении они отсутствуют. В области "Общие" на страницах свойств отображаются свойства по умолчанию:
Применение свойств к конфигурациям сборок и целевым платформам
Некоторые свойства, такие как имя приложения, применяются ко всем вариантам сборки, независимо от целевой платформы и того, предназначена ли эта сборка для отладки или выпуска. Однако большинство свойств зависит от конфигурации. Это вызвано тем, что компилятор должен знать, на какой именно платформе будет запускаться программа и какие именно параметры компилятора нужно использовать для создания правильного кода. Таким образом, при установке свойства важно следить за тем, для какой конфигурации и платформы должно применяться новое значение. Нужно ли применить его только для сборок отладки Win32 либо еще и для сборок отладки ARM и отладки x64? Например, свойство Оптимизации по умолчанию имеет значение Наибольшая скорость (/O2) в конфигурации выпуска, но отключено в конфигурации отладки.
На следующем рисунке показана та же страница свойств проекта, но конфигурация изменена на выпуск. Обратите внимание на другое значение для свойства "Оптимизация". Кроме того, обратите внимание, что активной конфигурацией по-прежнему является отладка. Здесь вы можете задать свойства для любой конфигурации, а не только активной.
Целевые платформы
Целевая платформа обозначает тип устройства и/или операционной системы, где будет запускаться исполняемый файл. Вы можете создать проект для нескольких платформ. Доступные целевые платформы для проектов C++ зависят от вида проекта. Среди прочего, к ним относятся Win32, x64, ARM, Android и iOS. Целевая платформа X86, которую вы могли заметить в Configuration Manager, идентична Win32 в собственных проектах C++. Win32 означает 32-разрядную версию Windows, а x64 — 64-разрядную. Дополнительные сведения об этих двух платформах см. в разделе Запуск 32-разрядных приложений.
Дополнительные сведения настройке свойств отладочной сборки см. в следующих разделах:
Параметры компилятора и компоновщика C++
Параметры компилятора и компоновщика C++ находятся в узлах C/C++ и Компоновщик на панели слева в разделе Свойства конфигурации. Эти данные преобразуются непосредственно в параметры командной строки, которые будут переданы компилятору. Чтобы ознакомиться с документацией по конкретному параметру, выберите параметр в центральной области и нажмите клавишу F1. Также можно просмотреть документацию по всем параметрам в разделах Параметры компилятора MSVC и Параметры компоновщика MSVC.
Значения каталога и пути
MSBuild поддерживает использование констант времени компиляции, называемых "макросами", для определенных строковых значений, включая каталоги и пути. Они представлены на страницах свойств, на которых можно просмотреть и изменить их с помощью редактора свойств.
На следующем рисунке показаны страницы свойств для проекта Visual Studio C++. В области слева выбрано правило Каталоги VC++ , а в области справа отображаются свойства, связанные с этим правилом. Значения $(. ) называются макросами. Макрос является константой времени компиляции, которая может ссылаться на значение, определенное Visual Studio или системой MSBuild, или пользовательское значение. Использование макросов вместо жестко заданных значений, таких как пути к каталогам, упрощает совместное использование параметров свойств на разных компьютерах и в разных версиях Visual Studio, а также позволяет гарантировать, что параметры проекта правильно участвуют в наследовании свойств.
Для просмотра значений всех доступных макросов можно использовать редактор свойств.
Предустановленные макросы
глобальные макросы
Применяются ко всем элементам в конфигурации проекта. Синтаксис: $(name) . Пример глобального макроса — свойство $(VCInstallDir) , которое сохраняет корневой каталог установки Visual Studio. Глобальный макрос соответствует элементу PropertyGroup в MSBuild.
макросы элементов
Синтаксис: %(name) . В случае файла макрос элемента применяется только к этому файлу — для примера можно использовать %(AdditionalIncludeDirectories) , чтобы определить каталоги, которые применяются только к конкретному файлу. Этот тип макроса элемента соответствует метаданным ItemGroup в MSBuild. При использовании в контексте конфигурации проекта макрос элемента применяется ко всем файлам определенного типа. Например, свойство конфигурации C/C++ Определения препроцессора может принимать макрос элемента %(PreprocessorDefinitions) , который применяется ко всем CPP-файлам в проекте. Этот тип макроса элемента соответствует метаданным ItemDefinitionGroup в MSBuild. Дополнительные сведения см. в разделе Определения элементов.
Пользовательские макросы
Вы можете создавать пользовательские макросы для использования в качестве переменных в сборках проекта. Например, можно создать пользовательский макрос, предоставляющий значение пользовательскому шагу сборки или пользовательскому средству сборки. Пользовательский макрос — это пара "имя-значение". Для доступа к этому значению в файле проекта используется нотация $(name) .
Пользовательский макрос хранится на странице свойств. Если проект еще не содержит страницу свойств, можно создать ее, выполнив одно из действий, описанных в разделе Совместное или повторное использование параметров проекта Visual Studio.
Создание пользовательского макроса
В левой области диалогового окна выберите Пользовательские макросы. В правой области нажмите кнопку Добавить макрос, чтобы открыть диалоговое окно Добавление пользовательского макроса.
В диалоговом окне задайте имя и значение для макроса. Кроме того, можно установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Редактор свойств
Редактор свойств можно использовать для изменения некоторых строковых свойств и выбора макросов в качестве значений. Чтобы открыть редактор свойств, выберите свойство на странице свойств, а затем нажмите кнопку со стрелкой вниз справа. Если раскрывающийся список содержит команду <Edit> , можно выбрать ее, чтобы открыть редактор свойств для данного свойства.
В редакторе свойств можно нажать кнопку Макросы, чтобы просмотреть доступные макросы и их текущие значения. На следующем рисунке показан редактор свойств для свойства Дополнительные каталоги включаемых файлов после нажатия кнопки Макросы. Если вы добавляете новое значение, когда установлен флажок Наследовать от родителя или от значений по умолчанию для проекта, оно добавляется ко всем значениям, которые в данный момент наследуются. Если снять флажок, новое значение заменяет наследуемые значения. В большинстве случаев следует не снимать этот флажок.
Добавление каталога включения к набору каталогов по умолчанию
При добавлении каталога включения в проект важно не переопределить все каталоги по умолчанию. Правильный способ добавления каталога — добавить новый путь, например "C:\MyNewIncludeDir", и затем добавить макрос $(IncludePath) к значению свойства.
Быстрый просмотр и поиск всех свойств
Без префикса:
поиск только в именах свойств (подстрока без учета регистра).
"/" или "-":
поиск только в параметрах компилятора (префикс без учета регистра)
v:
поиск только в значениях (подстрока без учета регистра).
Задание переменных среды для сборки
Компилятор MSVC (cl.exe) распознает определенные переменные среды, в частности LIB, LIBPATH, PATH и INCLUDE. При сборке с помощью интегрированной среды разработки для задания этих переменных среды используются свойства, заданные на странице свойств Каталоги VC++. Если значения LIB, LIBPATH, и ВКЛЮЧАЕТ уже заданы, например с помощью командной строки разработчика, они заменяются значениями соответствующих свойств MSBuild. Сборка затем добавляет значение свойства каталогов исполняемых файлов "Каталоги VC++" в начало переменной PATH. Для задания пользовательской переменной среды можно создать пользовательский макрос и затем установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Задание переменных среды для сеанса отладки
В правой области измените параметры проекта Среда или Объединение среды, а затем нажмите кнопку ОК.
Содержание раздела
Совместное или повторное использование параметров проекта Visual Studio
Создание файла PROPS с настраиваемыми параметрами сборки, которые можно использовать совместно или повторно.
Наследование свойств проекта
Описывается порядок вычисления для файлов PROPS, TARGETS, VCXPROJ и переменных среды в процессе сборки.
Изменение свойств и целевых объектов без изменения файла проекта
Создание временных параметров сборки без изменения файла проекта.
Как с огромным количеством различных версий языка C++ (C++98, C++03, C++11, C++14, C++17, C++20) компилятор понимает, какую из них ему следует использовать? Как правило, компилятор выбирает стандарт языка по умолчанию (часто не самый последний языковой стандарт). Если вы хотите использовать другой стандарт, то вам придется внести изменения в настройки вашей IDE/компилятора. Эти настройки применяются только к текущему проекту. При создании нового проекта вам придется всё делать заново.
Кодовые имена для версий языка С++
Обратите внимание на то, что каждый языковый стандарт имеет название, указывающее на год его принятия/утверждения (например, C++17 был принят/утвержден в 2017 году).
Однако, когда согласовывается новый языковой стандарт, неясно, в каком году удастся его принять, поэтому действующим языковым стандартам присваиваются кодовые имена, которые затем заменяются фактическими именами при доработке стандарта. Например, C++11 назывался c++1x , пока над ним вели работу. Вы можете по-прежнему видеть на просторах Интернета подобные кодовые имена (особенно, когда речь заходит о будущей версии языкового стандарта, у которого еще нет окончательного названия).
Вот сопоставление кодовых имен версий С++ с их окончательными названиями:
Например, если вы видите c++1z , то знайте, что речь идет о стандарте C++17.
Установка стандарта языка С++ в Visual Studio
На момент написания данной статьи, Visual Studio 2019 по умолчанию использует возможности C++14, что не позволяет использовать более новые фичи, представленные в C++17 и в C++20.
Чтобы использовать новый функционал, вам необходимо подключить новый языковой стандарт. К сожалению, сейчас нет способа сделать это глобально — вы должны делать это к каждому проекту индивидуально.
Чтобы использовать новый языковый стандарт в Visual Studio, откройте ваш проект, затем щелкните правой кнопкой мышки по названию вашего проекта в меню "Обозреватель решений" > "Свойства" :
В диалоговом окне вашего проекта убедитесь, что в пункте "Конфигурация" установлено значение "Все конфигурации" . Затем перейдите на вкладку "C/C++" > "Язык" и в пункте "Стандарт языка С++" выберите ту версию языка С++, которую хотели бы использовать:
На момент написания данной статьи, я рекомендую выбрать "Стандарт ISO C++17 (/std:c++17)" , который является последним стабильным стандартом.
Если вы хотите поэкспериментировать с возможностями грядущего стандарта языка C++ — C++20, то вы можете выбрать пункт "Предварительная версия . (/std:c++latest)" . Просто помните, что его поддержка может иметь баги.
Установка стандарта языка C++ в Code::Blocks
Code::Blocks по умолчанию может использовать стандарт C++11. Хорошей новостью является то, что Code::Blocks позволяет устанавливать ваш стандарт языка С++ глобально, поэтому вы можете установить его один раз и сразу на все проекты (а не для каждого проекта в индивидуальном порядке). Для этого перейдите в меню "Settings" > "Compiler" :
Затем на вкладке "Compiler flags" найдите следующие пункты меню:
Отметьте тот пункт, у которого число обозначает ближайший (к текущему) год утверждения стабильной версии и нажмите "ОК" (на вышеприведенном скриншоте этим пунктом является "Have g++ follow the C++17 ISO C++ language standard [-std=c++17]" ).
Примечание: Если вы не нашли в ваших настройках опцию с C++17, то вам следует обновить вашу версию Code::Blocks.
Установка стандарта языка С++ в GCC/G++
В GCC/G++ вы можете прописать соответствующие флаги -std=c++11 , -std=c++14 , -std=c++17 или -std=c++2a , чтобы подключить функционал C++11/14/17/20, соответственно.
Тестирование вашего компилятора
После подключения версии C++17 или выше, вы можете провести тест, который позволит понять, всё ли верно сделано и действительно ли подключена новая версия языка С++. Следующая программа в С++17 должна выполниться без каких-либо предупреждений или ошибок:
- размер шрифта уменьшить размер шрифтаувеличить размер шрифта
- Печать
- Эл. почта
- Станьте первым комментатором!
Для разработки программ на языке c++ вы можете использовать среду разработки Visual Studio Code (VSCode).
Сегодня мы рассмотрим установку поддержки языка программирования с++ в этой IDE.
Выбор компилятора
Перед установкой расширения для поддержки с++ в VSCode нам нужно сначала определиться какой компилятор использовать.
Под Windows существует несколько возможностей:
- Вы можете использовать Windows Subsystem for Linux (WSL) и установив в виртуальной машине все необходимые пакеты компилировать программы с помощью специального расширения для VSCode.
- Вы можете установить MinGW или MSYS2 и использовать их компиляторы.
- Вы можете установить компилятор Microsoft C++ compiler (MSVC)
Сегодня мы рассмотрим самый простой способ – установку Microsoft C++ compiler (MSVC).
Установка Microsoft C++ compiler (MSVC)
Для начала скачаем установщик по ссылке:
Скачиваем файл, в моем случае он называется:
Запускаем, откроется окно:
Нажимаем "Продолжить" и ждем, пока не закончиться скачивание файлов:
После этого откроется окно:
Поставьте галочку рядом с Разработка классических приложений на C++
К сожалению, нет способа не ставить саму IDE.
Снимите галочки с:
- Live Share
- С++ AddressSanitizer
- Адаптер тестов для Boost.Test
- Адаптер тестов для Google Test
Ожидайте окончания установки.
После окончания загрузок перезагрузите ваш ПК
Проверка доступности компилятора
После перезагрузки проверим доступен ли компилятор, для этого запустите cmd.exe скопируйте и вставьте в консоль строку
Будет запущена консоль разработчика:
Компилятор успешно установлен и доступен.
Теперь пришло время установить расширение для поддержки с++ в VSCode.
Установка расширения для поддержки С++ в VSCode
Откроется панель Extensions: Marketplace – это каталог, из которого мы можем скачать все необходимые расширения и темы, достаточно знать их название.
Выберите указанный пункт и нажмите install
Будет начато скачивание дополнительных компонентов. После окончания загрузок расширение будет готово к использованию.
Настройка VSCode для использования компилятора MSVC
Для того, чтобы протестировать работу компилятора создадим тестовый проект.
Для нормального функционирования компилятора MSVC нужно установить несколько переменных окружения. Чтобы упростить задачу воспользуемся Visual Studio 2019 Developer Command Prompt.
Запустите его из меню Пуск введя слово developer, откроется консоль:
Допустим, наши проекты буду находится в папке d:\cpp
Создадим данную папку и перейдем в нее:
Создадим папку для проекта test
Запустим VSCode из этой папки
Откроется окно VSCode
Обратите внимание наша папка уже открыта.
Добавим новый файл для этого нажмите на кнопку:
В появившееся поле введите имя файла main.cpp
Введите текст программы и не забудьте сохранить результат:
Настройка компилятора для проекта
Теперь у нас есть программа, осталось её скомпилировать, давайте настроим задачу сборки для проекта.
Настройка задачи сборки (Build Task)
Выберите пункт меню Terminal –> Configure Default Build Task…
В окне выберите – cl.exe
Будет создан файл сборки:
Закройте вкладку с файлом tasks.json
Откройте файл main.cpp и нажмите
Сборка успешно завершена.
Щёлкните мышкой по терминалу и нажмите пробел, чтобы закрыть результаты сборки.
Введите main.exe и нажмите Enter
Поздравляю, мы успешно настроили среду разработки VSCode для работы с языком программирования C++.
Заключение
Сегодня мы добавили поддержку языка программирования C++ в среду разработки VSCode.
Нами был установлен компилятор Microsoft C++ compiler (MSVC) и проверена его работоспособность.
Мы добавили тестовый проект и настроили задачу сборки Build Task для нашего проекта.
Читайте также: