Какой компилятор в visual studio 2017
В наше время open source проекты все популярнее. На площадках открытых проектов, например, на github можно найти множество полезных программ, но они не всегда имеют исполняемые файлы ("exe"), поэтому я постараюсь рассказать о том, как можно собрать самостоятельно C/C++ программу, из исходников, написанную на Microsoft Visual Studio.
Первым делом нам необходимо загрузить онлайн установщик Microsoft Visual Studio, с официального сайта. Для компиляции С/С++ проектов нет необходимости во всех пакетах и можно выбрать только те, которые нам необходимы.
Установщик загрузит необходимые пакеты из интернета и установит их.
После установки Visual Studio можно убедиться, что всё работает создав тестовый проект и скомпилировав его. Для этого нажмите в меню "Файл" → "Создать" → "Проект. "
После чего появится диалог выбора типа проекта, где можно выбрать:
- Консольное приложение;
- Классическое приложение;
- Библиотеку динамической компоновки (dll);
- Статическую библиотеку;
В нашем случае для быстрой проверки подойдет консольное приложение, выбираем название и папку проекта , после чего жмём кнопку "ОК" и создается наша программа.
После этого остается остается лишь скомпилировать её, для этого нужно выбрать в меню "Сборка" и нажать на пункт "Собрать решение".
Далее наш проект скомпилируется и в папке проекта появится наш тестовый исполняемый файл ("exe").
Если всё работает как надо, то можно приступать к сборке какого-нибудь другого открытого проекта с github или другого хостинга проектов.
Первым делом нам нужно загрузить исходники проекта. На площадке github это делается довольно просто, жмем на кнопку "Code" и "Download ZIP". После чего нужно распаковать его и можно приступать к сборке.
Ищем файл с расширением "<название_проекта>.vcxproj" и запускаем его. Перед нами появится диалог в котором нам предложат обновить SDK проекта (набор библиотек для разработки, которые Microsoft периодически обновляет) и набор инструментов, жмём обновить.
Теперь наш проект можно собрать, но до сборки необходимо выбрать разрядность проекта (например, для 32 битной системы или 64 битной), а также тип сборки (отладочный режим - debug или release).
Выбираем 64 битную систему и тип сборки релиз, после чего компилируем проект. Как и ранее нужно выбрать в меню "Сборка" и нажать на пункт "Собрать решение".
Некоторые проектам требуется вручную изменить SDK и набор инструментов, на установленный у вас, для этого идём в свойства проекта, выбираем сверху типа сборки и разрядность системы и уже там изменяем SDK и набор инструментов. В выпадающем меню появляются установленные у нас версии, выбираем их и нажимаем "ОК". После чего наш проект скомпилируется.
Бывает, что проект использует сторонние библиотеки, для этого их нужно загрузить отдельно и положить в папку. Узнать путь или изменить его можно в свойстве проекта, в разделе "С/C++" → "Общие" → "Дополнительные каталоги включаемых файлов".
Бывает, что SDK или набор инструментов, в свойстве проекта не изменяется в диалоге, чтобы изменить их нужно записать номер SDK, закрыть Visual Studio и вручную, блокнотом изменить этот номер в файле проекта "<название_проекта>.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 ++ 14 на C ++ 17 в Microsoft Visual Studio?
Или это недоступно в релизных версиях VS?
Какие особенности C ++ 17? Какая версия Visual Studio? Если вы спрашиваете о C ++ 17, почему вы пометили свой вопрос c++11 и c++14 ? C ++ 17 не был доступен, и я подумал, что те, кто интересуется конкретными версиями C ++, лучше знают, как его переключить. Например, я хочу, чтобы std :: vector.emplace_back () возвращал ссылку на вновь созданный элемент. Я знаю эту строку +1, и я получил эту ссылку, но я все равно хотел бы знать ответ на свой вопрос. Сообщество VS 2015 (14.0.25431.01 Обновление 3) Вы не можете включить определенные языковые диалекты в VS, вы получаете то, что они реализовали. Если вы используете VS21015, вам может очень повезти с функциями стандартной библиотеки, включенными в C ++ 17, но не с языковыми функциями. @preat MSVC 2017 имеет «последний» параметр, но он еще не выпущен.Теперь есть раскрывающийся список (по крайней мере, с VS 2017.3.5), где вы можете специально выбрать C ++ 17. Доступные параметры (в разделе Проект> Свойства> C / C ++> Язык> Стандарт языка C ++)
- Стандарт ISO C ++ 14. Параметр командной строки msvc: /std:c++14
- Стандарт ISO C ++ 17. Параметр командной строки msvc: /std:c++17
- Последний проект стандарта. Параметр командной строки msvc: /std:c++latest
(Бьюсь об заклад, как только C ++ 20 выйдет и будет более полно поддерживаться Visual Studio, он станет /std:c++20 )
Синтаксис -std:c++14 , -std:c++17 а -std:c++latest также работает, например , когда вы предпочитаете , чтобы вручную ввести параметры компилятора (протестировано с VS2017). Разве это уже не ясно из ответа, или вы имеете в виду - именно /std: переключатели, которые я перечисляю? Я вижу выгоду, когда исхожу из gcc или clang . Тогда - менее навязчивый (однако синтаксис все же немного отличается ( : вместо = )). В VS 2019, чтобы перейти к свойствам проекта, перейдите в «Обозреватель решений», щелкните правой кнопкой мыши заголовок проекта и выберите «Свойства». Тогда следуйте указаниям этого поста. @AndreiKrasutski. ISO C ++ 20 еще не существует, но некоторая поддержка есть в / std: c ++ latest. Стандарт C ++ 20 ожидается в следующем году. Я отредактировал комментарий в своем ответе.MSBuild (проект / решение Visual Studio * .vcproj / *. Sln ) :
Добавьте к дополнительным параметрам в настройках проекта: /std:c++latest для включения последних функций - в настоящее время C ++ 17 с VS2017, VS2015 Update 3.
/permissive- отключит нестандартные расширения C ++ и включит стандартное соответствие в VS2017.
РЕДАКТИРОВАТЬ (октябрь 2018 г.): здесь описаны последние функции VS2017:
VS2017 поддерживает: /std:[c++14|c++17|c++latest] сейчас. Эти флаги можно установить на страницах свойств проекта:
Поддержка модулей Стандартной Библиотеки реализована в Visual Studio начиная с версии 2017 RTM. Эта функция на данный момент является опциональной и по умолчанию отключена. В будущих версиях модули будут устанавливаться автоматически вместе с заголовками Стандартной Библиотеки. Вам нужно лишь выбрать эту опцию при установке или обновлении поддержки C++.
Проверка правильности установки
Чтобы проверить, настроена ли ваша копия VS 2017 для поддержки модулей, скомпилируйте и запустите приведенную ниже программу (назовите ее, например, test-vs2017-slm.cxx) из командной строки разработчика. Поскольку модули на данный момент являются экспериментальной функцией, их поддержка пока еще очень слабо реализована в среде VS.
При компиляции этого кода с командой
на выходе должен получиться исполняемый файл (test-vs2017-slm.exe), который при запуске распечатает слова «Plato», «Descartes» и «Bacon» — каждое отдельной строкой.
Ключ компилятора для подключения модулей Стандартной Библиотеки
Необходимо добавить ключ /MD при компиляции исходного файла, чтобы подключить модули Стандартной Библиотеки. Ключ /MD инициализирует динамическую библиотеку времени выполнения C (CRT). В режиме отладки следует использовать ключ /MDd.
Если вы забыли указать ключ /MD (или /MDd в режиме отладки), линковщик выдаст ряд предупреждений и ошибку линковки LNK2019, говорящую о наличии неразрешенных внешних символов.
Никаких других ключей для использования модулей Стандартной Библиотеки не требуется. Эти модули могут применяться только для использования с библиотеками импорта DLL Универсальной библиотеки CRT (UCRT).
Подключение модулей Стандартной Библиотеки из среды разработки VS
Если вы хотите использовать среду разработки вместо командной строки, настройте ваш проект для использования экспериментальных модулей согласно следующей инструкции.
1. Откройте окно «Свойства» (Properties) проекта:
2. Перейдите в раздел «Свойства конфигурации» (Configuration Properties) -> C/C++ -> «Генерация кода» (Code Generation) и убедитесь, что у вас выбрана библиотека Multithreaded Debug DLL или Multithreaded DLL (для режимов отладки и релиза соответственно). Эти библиотеки выбраны по умолчанию для новых проектов, так что, если вы ничего не меняли, никаких проблем возникнуть не должно.
3. Зайдите в раздел «Свойства конфигурации» (Configuration Properties) -> C/C++ -> «Язык» (Language) и убедитесь, что включена поддержка стандарта C++17. Если это не так, выберите из выпадающего списка стандарт C++17 или последний проект стандарта C++ (C++ Latest Draft Standard) для конфигураций, которые вы планируете использовать.
4. Впишите команду /experimental:module /module:stdIfcDir "$(VCToolsInstallDir_150)ifc\$(PlatformTarget)" в разделе «Свойства конфигурации» (Configuration Properties) -> C/C++ -> «Командная строка» (Command Line), чтобы включить поддержку модулей для текущего проекта. Обратите внимание, что данный шаг будет упразднен в будущих версиях VS 2017: среда будет сама указывать расположение файлов модулей (задается параметром /module:stdIfcDir) при включении опции поддержки модулей C++.
После этих действий сборка и запуск тестовой программы должны пройти успешно — программа распечатает имена трех философов.
Изменение синтаксиса экспорта модулей
На съезде комитета по стандартизации C++ в ноябре 2016 года было принято решение об изменении синтаксиса экспорта модулей (см. Проблема модулей N1).
Настоящая версия Visual C++ учитывает это изменение, но также позволяет использовать и старый синтаксис, предупреждая о переходе к устаревшему варианту. Комитет по C++ рассматривает возможность присвоения старому синтаксису нового значения, несовместимого с прежним. Мы призываем вас использовать новый синтаксис; поддержка старого синтаксиса будет прекращена в целях соответствия проекту технической спецификации по модулям согласно поправкам комитета ISO C++.
Модули Стандартной Библиотеки (экспериментальная функция)
Ключевым нововведением в версии VS2017 RTM стала поддержка подключения Стандартной Библиотеки C++ посредством модулей. Это экспериментальный инструмент, описанный в предложении по C++ о Модулях Стандартной Библиотеки. В текущей версии модули организованы следующим образом:
- std.regex предоставляет доступ к содержимому заголовка <regex>
- std.filesystem предоставляет доступ к содержимому заголовка <experimental/filesystem>
- std.memory предоставляет доступ к содержимому заголовка <memory>
- std.threading предоставляет доступ к содержимому заголовков <atomic>, <condition_variable>, <future>, <mutex>, <shared_mutex>, <thread>
- std.core предоставляет доступ к прочему содержимому Стандартной Библиотеки C++
Если вы хотите использовать модули для включения заголовков не из Стандартной Библиотеки, сгенерировать модули Стандартной Библиотеки можно с помощью ключей /module:name (см. исходную заметку по модулям C++) и /module:export. Если ваш проект зависит от других библиотек и вы хотите попробовать собрать код совсем без заголовков, упаковать заголовки из таких библиотек можно тем же самым способом.
Новые версии VS будут в большей степени соответствовать предложению по модулям Стандартной Библиотеки.
Призыв к действию
В заключение
О прочих проблемах, связанных с использованием среды MSVC в VS 2017, можно сообщить с помощью функции Сообщить о проблеме (Report a Problem) из установщика или из самой среды Visual Studio. Свои предложения оставляйте на сайте UserVoice. Спасибо!
- размер шрифта уменьшить размер шрифтаувеличить размер шрифта
- Печать
- Эл. почта
- Станьте первым комментатором!
Для разработки программ на языке 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 для нашего проекта.
Читайте также: