Какой компилятор в visual studio 2017
Следующие функции C++ доступны в Visual Studio. Если не указано иное, все функции доступны во всех выпусках: Visual Studio Community, Visual Studio Professional и Visual Studio Enterprise. Некоторые функции требуют конкретных рабочих нагрузок или дополнительных компонентов, которые можно установить с помощью Visual Studio Installer.
В следующей таблице перечислены компоненты Visual C++, доступные в Visual Studio 2017. Крестик в ячейке указывает, что компонент доступен. Пустая ячейка означает, что компонент недоступен. Примечания в скобках означают, что компонент доступен с ограничениями.
Платформы
- Классические приложения
- Универсальная платформа Windows (планшеты, ПК, Xbox, IoT и HoloLens)
- Linux
- Android
- iOS
Платформа | Visual Studio Express для Windows 10 | Visual Studio Express для Windows Desktop | Visual Studio Community и Professional | Visual Studio Enterprise |
---|---|---|---|---|
Классические приложения | X | X | X | |
Универсальная платформа Windows (телефоны, планшеты, ПК, Xbox, IoT и HoloLens) | X | X | X | |
Linux | X | X | ||
Microsoft Store 8.1 | X | X | ||
Windows Phone 8.0 | X | X | ||
Android | X | X | ||
iOS | X | X |
Компиляторы
- 32-разрядный компилятор MSVC для x86, x 64, ARM и ARM64
- 64-разрядный компилятор MSVC для x86, x 64, ARM и ARM64
- Кросскомпилятор GCC для ARM
- Clang/LLVM
- В Windows Clang/LLVM 12.0 для x86 или x64 (поддержка только CMake).
- Любая установка Clang/LLVM поддерживается дистрибутивом Linux.
Компилятор Visual Studio Express для Windows Visual Studio Express для Windows Desktop Visual Studio Professional и Community Visual Studio Enterprise 32-разрядный компилятор x86 MSVC X X X X Кросс-компилятор x86_arm X X X 64-разрядный компилятор x64 MSVC X X Кросс-компилятор x86_x64 X X X X Рабочие нагрузки C++
разработка классических приложений на C++;
- Основные возможности C++ для классических приложений
- MSVC версии 143 — средства сборки C++ для VS 2022 для x64/x86 (последняя версия)
- Пакет SDK для Windows 10 (последняя версия для этой версии Visual Studio)
- JIT-отладчик
- Средства профилирования C++
- Средства CMake C++ для Windows
- ATL C++ для средств сборки версии 143 (x86 & x64)
- Адаптер теста для Boost.Test
- Адаптер тестов для Google Test
- Live Share
- IntelliCode
- C++ AddressSanitizer
- IntelliTrace (только в выпуске Enterprise)
- MSVC версии 143 — средства сборки C++ для VS 2022 для ARM64 (последняя версия)
- MFC C++ для средств сборки последней версии 143 (x86 & x64)
- Поддержка C++/CLI для средств сборки версии 143 (последняя версия)
- Модули C++ для средств сборки версии 143 (x64 или x86 — экспериментальная)
- Средства C++ Clang для Windows (12.0.0 - x64/x86)
- Диагностика JavaScript
- IncrediBuild — ускорение сборки
- Пакет SDK для Windows 11
- Пакет SDK для Windows 10 (другие версии)
- MSVC версии 142 — средства сборки C++ для VS 2019 для x64/x86 (версии 14.29)
- MSVC версии 141 — средства сборки C++ для VS 2017 для 64- или 32-разрядных систем (версия 14.16)
- MSVC версии 140 — средства сборки C++ VS 2015 (версия 14.00)
- MSVC версии 142 — средства сборки C++ для VS 2019 для x64/x86 (последняя версия)
- Пакет SDK для Windows 10 (последняя версия для этой версии Visual Studio)
- JIT-отладчик
- Средства профилирования C++
- Средства CMake C++ для Windows
- ATL C++ для средств сборки версии 142 (x86 & x64)
- Адаптер теста для Boost.Test
- Адаптер тестов для Google Test
- Live Share
- IntelliCode
- C++ AddressSanitizer
- IntelliTrace (только в выпуске Enterprise)
- MSVC версии 142 — средства сборки C++ для VS 2019 для ARM64 (последняя версия)
- MFC C++ для средств сборки последней версии 142 (x86 & x64)
- Поддержка C++/CLI для средств сборки версии 142 (последняя версия)
- Модули C++ для средств сборки версии 142 (x64 или x86 — экспериментальная)
- Средства C++ Clang для Windows
- Диагностика JavaScript
- IncrediBuild — ускорение сборки
- Пакет SDK для Windows 11
- Пакет SDK для Windows 10 (другие версии)
- MSVC версии 141 — средства сборки C++ для VS 2017 для 64- или 32-разрядных систем (версия 14.16)
- MSVC версии 140 — средства сборки C++ VS 2015 (версия 14.00)
Разработка приложений для Linux на C++
- Основные компоненты C++
- Разработка на C++ для Linux
- Средства CMake C++ для Linux
- IntelliCode
- Средства разработки для встроенных платформ и Интернета вещей
"Разработка приложений для универсальной платформы Windows".
- IntelliCode
- IntelliTrace (только в выпуске Enterprise)
- Подключение USB-устройств
- Средства универсальной платформы Windows для C++ (v143)
- Средства универсальной платформы Windows на C++ (версия 142)
- Средства универсальной платформы Windows для C++ (v141)
- Отладчик графики и профилировщик GPU для DirectX
- Пакет SDK для Windows 11
- Пакет SDK для Windows 10 (другие версии)
- Инструменты архитектуры и анализа
- IntelliCode
- IntelliTrace (только в выпуске Enterprise)
- Подключение USB-устройств
- Средства универсальной платформы Windows на C++ (версия 142)
- Средства универсальной платформы Windows для C++ (v141)
- Отладчик графики и профилировщик GPU для DirectX
- Пакет SDK для Windows 11
- Пакет SDK для Windows 10 (другие версии)
- Инструменты архитектуры и анализа
Разработка игр на C++
- Основные компоненты C++
- Универсальная среда выполнения C для Windows
- Обновление для распространяемого компонента C++ 2019
- MSVC версии 143 — средства сборки C++ для VS 2022 для x64/x86 (последняя версия)
- Средства профилирования C++
- C++ AddressSanitizer
- Пакет SDK для Windows 10 (последняя версия для этой версии Visual Studio)
- IntelliCode
- IntelliTrace (только в выпуске Enterprise)
- Пакет SDK для Windows 11
- Пакет SDK для Windows 10 (другие версии)
- IncrediBuild — ускорение сборки
- Cocos
- Установщик Unreal Engine
- Поддержка IDE Android для Unreal Engine
- Основные компоненты C++
- Универсальная среда выполнения C для Windows
- Обновление для распространяемого компонента C++ 2019
- MSVC версии 142 — средства сборки C++ для VS 2019 для x64/x86 (последняя версия)
- Средства профилирования C++
- Пакет SDK для Windows 10 (последняя версия для этой версии Visual Studio)
- IntelliCode
- IntelliTrace (только в выпуске Enterprise)
- Пакет SDK для Windows 11
- Пакет SDK для Windows 10 (другие версии)
- IncrediBuild — ускорение сборки
- Cocos
- Установщик Unreal Engine
- Поддержка IDE Android для Unreal Engine
Разработка мобильных приложений на C++
- Основные компоненты C++
- Установка пакета SDK для Android (уровень API 25) (локальная установка для разработки мобильных приложений на C++)
- NDK для Android (R21E)
- Apache Ant (1.9.3)
- Средства разработки на C++ для Android
- IntelliCode
- Intel Hardware Accelerated Execution Manager (HAXM), локальная установка
- Средства разработки C++ для iOS
- IncrediBuild — ускорение сборки
- NDK для Android (R16B)
- Apache Ant (1.9.3)
- Средства разработки на C++ для Android
- IntelliCode
- Google Android Emulator (уровень API 25), локальная установка
- Intel Hardware Accelerated Execution Manager (HAXM), локальная установка
- NDK для Android (R16B) (32-разрядный)
- Средства разработки C++ для iOS
- IncrediBuild — ускорение сборки
Отдельные компоненты
Эти компоненты можно установить независимо друг от друга из любой рабочей нагрузки.
- Диагностика JavaScript
- Live Share
- Среда выполнения универсальной платформы Windows C++ для средств сборки версии 142
- Компонент для публикации ClickOnce
- Проекты Microsoft Visual Studio Installer
- Пакет Windows SDK
Библиотеки и заголовки
Системы сборки и проектов
- CMake
- Любая система сборки через параметр "Открыть папку"
- Построение с помощью командной строки (msbuild.exe)
- Собственное многоплатформенное нацеливание
- Управляемое многоплатформенное нацеливание
- Параллельное построение
- Настройки сборки
- Расширяемость страниц свойств
Функция сборки или проекта Visual Studio Express для Windows Visual Studio Express для Windows Desktop Visual Studio Professional и Community Visual Studio Enterprise Построение с помощью командной строки (msbuild.exe) X X X X Собственное многоплатформенное нацеливание X X X Управляемое многоплатформенное нацеливание X X X Параллельное построение X X X X Настройки сборки X X X X Расширяемость страниц свойств X X X X Шаблоны проектов
Указанные ниже шаблоны проектов доступны в зависимости от того, какие рабочие нагрузки установлены.
The following C++ features are available in Visual Studio. Unless stated otherwise, all features are available in all editions: Visual Studio Community, Visual Studio Professional, and Visual Studio Enterprise. Some features require specific workloads or optional components, which you can install with the Visual Studio Installer.
The following tables show Visual C++ features that are available in Visual Studio 2017. An X in a cell indicates that the feature is available; an empty cell indicates that the feature is not available. Notes in parentheses indicate that a feature is available, but restricted.
Platforms
- Windows Desktop
- Universal Windows Platform ((tablet, PC, Xbox, IoT, and HoloLens))
- Linux
- Android
- iOS
Platform Visual Studio Express for Windows 10 Visual Studio Express for Windows Desktop Visual Studio Community/Professional Visual Studio Enterprise Windows Desktop X X X Universal Windows Platform ((phone, tablet, PC, Xbox, IoT, and HoloLens)) X X X Linux X X Microsoft Store 8.1 X X Windows Phone 8.0 X X Android X X iOS X X Compilers
- MSVC 32-bit compiler for x86, x64, ARM, and ARM64
- MSVC 64-bit compiler for x86, x64, ARM, and ARM64
- GCC cross-compiler for ARM
- Clang/LLVM
- On Windows, Clang/LLVM 12.0, targeting x86 or x64 (CMake support only).
- On Linux, any Clang/LLVM installation supported by the distro.
Compiler Visual Studio Express for Windows Visual Studio Express for Windows Desktop Visual Studio Professional / Community Visual Studio Enterprise MSVC 32-bit X86 compiler X X X X x86_arm cross-compiler X X X MSVC 64-bit x64 compiler X X x86_x64 cross-compiler X X X X C++ Workloads
Desktop development with C++
- MSVC v143 - VS 2022 C++ x64/x86 build tools (latest)
- Windows 10 SDK (latest for this Visual Studio version)
- Just-In-Time debugger
- C++ profiling tools
- C++ CMake tools for Windows
- C++ ATL for v143 build tools (x86 & x64)
- Test Adapter for Boost.Test
- Test Adapter for Google Test
- Live Share
- IntelliCode
- C++ AddressSanitizer
- IntelliTrace (Enterprise only)
- MSVC v143 - VS 2022 C++ ARM64 build tools (latest)
- C++ MFC for latest v143 build tools (x86 & x64)
- C++/CLI support for v143 build tools (latest)
- C++ Modules for v143 build tools (x64/x86 – experimental)
- C++ Clang tools for Windows (12.0.0 - x64/x86)
- JavaScript diagnostics
- IncrediBuild - Build Acceleration
- Windows 11 SDK
- Windows 10 SDK (other versions)
- MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.29)
- MSVC v141 - VS 2017 C++ x64/x86 build tools (v14.16)
- MSVC v140 - VS 2015 C++ build tools (v14.00)
- MSVC v142 - VS 2019 C++ x64/x86 build tools (latest)
- Windows 10 SDK (latest for this Visual Studio version)
- Just-In-Time debugger
- C++ profiling tools
- C++ CMake tools for Windows
- C++ ATL for v142 build tools (x86 & x64)
- Test Adapter for Boost.Test
- Test Adapter for Google Test
- Live Share
- IntelliCode
- C++ AddressSanitizer
- IntelliTrace (Enterprise only)
- MSVC v142 - VS 2019 C++ ARM64 build tools (latest)
- C++ MFC for latest v142 build tools (x86 & x64)
- C++/CLI support for v142 build tools (latest)
- C++ Modules for v142 build tools (x64/x86 – experimental)
- C++ Clang tools for Windows
- JavaScript diagnostics
- IncrediBuild - Build Acceleration
- Windows 11 SDK
- Windows 10 SDK (other versions)
- MSVC v141 - VS 2017 C++ x64/x86 build tools (v14.16)
- MSVC v140 - VS 2015 C++ build tools (v14.00)
Linux development with C++
- C++ core features
- C++ for Linux Development
- C++ CMake tools for Linux
- IntelliCode
- Embedded and IoT development tools
Universal Windows Platform development
- IntelliCode
- IntelliTrace (Enterprise only)
- USB Device Connectivity
- C++ (v143) Universal Windows Platform tools
- C++ (v142) Universal Windows Platform tools
- C++ (v141) Universal Windows Platform tools
- Graphics debugger and GPU profiler for DirectX
- Windows 11 SDK
- Windows 10 SDK (other versions)
- Architecture and analysis tools
- IntelliCode
- IntelliTrace (Enterprise only)
- USB Device Connectivity
- C++ (v142) Universal Windows Platform tools
- C++ (v141) Universal Windows Platform tools
- Graphics debugger and GPU profiler for DirectX
- Windows 11 SDK
- Windows 10 SDK (other versions)
- Architecture and analysis tools
C++ Game Development
- C++ core features
- Windows Universal C Runtime
- C++ 2019 Redistributable Update
- MSVC v143 - VS 2022 C++ x64/x86 build tools (latest)
- C++ profiling tools
- C++ AddressSanitizer
- Windows 10 SDK (latest for this Visual Studio version)
- IntelliCode
- IntelliTrace (Enterprise only)
- Windows 11 SDK
- Windows 10 SDK (other versions)
- IncrediBuild - Build Acceleration
- Cocos
- Unreal Engine installer
- Android IDE support for Unreal engine
- C++ core features
- Windows Universal C Runtime
- C++ 2019 Redistributable Update
- MSVC v142 - VS 2019 C++ x64/x86 build tools (latest)
- C++ profiling tools
- Windows 10 SDK (latest for this Visual Studio version)
- IntelliCode
- IntelliTrace (Enterprise only)
- Windows 11 SDK
- Windows 10 SDK (other versions)
- IncrediBuild - Build Acceleration
- Cocos
- Unreal Engine installer
- Android IDE support for Unreal engine
Mobile development with C++
- C++ core features
- Android SDK setup (API level 25) (local install for Mobile development with C++)
- Android NDK (R21E)
- Apache Ant (1.9.3)
- C++ Android development tools
- IntelliCode
- Intel Hardware Accelerated Execution Manager (HAXM) (local install)
- C++ iOS development tools
- IncrediBuild - Build Acceleration
- Android NDK (R16B)
- Apache Ant (1.9.3)
- C++ Android development tools
- IntelliCode
- Google Android Emulator (API Level 25) (local install)
- Intel Hardware Accelerated Execution Manager (HAXM) (local install)
- Android NDK (R16B) (32bit)
- C++ iOS development tools
- IncrediBuild - Build Acceleration
Individual components
You can install these components independently from any workload.
- JavaScript diagnostics
- Live Share
- C++ Universal Windows Platform runtime for v142 build tools
- ClickOnce Publishing
- Microsoft Visual Studio Installer Projects
- Windows SDK
Libraries and Headers
Build and Project Systems
- CMake
- Any build system via Open Folder
- Command line builds (msbuild.exe)
- Native Multi-targeting
- Managed Multi-targeting
- Parallel Builds
- Build Customizations
- Property Pages Extensibility
Build or Project Feature Visual Studio Express for Windows Visual Studio Express for Windows Desktop Visual Studio Professional / Community Visual Studio Enterprise Command line builds (msbuild.exe) X X X X Native Multi-targeting X X X Managed Multi-targeting X X X Parallel Builds X X X X Build Customizations X X X X Property Pages Extensibility X X X X Project Templates
The following project templates are available depending on which workloads you have installed.
Microsoft Visual Studio 2017 supports several C++ compilers to suit a wide variety of codebases. In addition to the Microsoft Visual C++ compiler that many of you are likely familiar with, Visual Studio 2017 also supports Clang, GCC, and other compilers when targeting certain platforms.
This post is intended to familiarize you with the variety of C++ compilers that are compatible with the Visual Studio IDE, and to understand when they might be applicable to use with your projects. Some compilers may be better suited to your needs depending on your project or target. Alternatively, you may be interested in checking out new language features, such as C++ Concepts, that are not available across all compilers without needing to leave the IDE.
You can select the compiler and corresponding toolset that will be used to build a project with the “Platform Toolset” property under General Configuration Properties for C++ projects. Any installed compilers that are applicable to your project type will be listed in the “Platform Toolset” dropdown.
Microsoft C++ Compiler (MSVC)
If you are targeting Windows, the Microsoft C++ compiler (MSVC) may be the way to go. This is the default compiler for most Visual Studio C++ projects and is recommended if you are targeting Windows.
Compiler options for the Microsoft C++ compiler.
Clang
You can use the Clang compiler with Visual Studio to target Android, iOS, and Windows.
If you are targeting Android, you can use the Clang/LLVM compiler that ships with the Android NDK and toolchain to build your project. Likewise, Visual Studio can use Clang running on a Mac to build projects targeting iOS. Support for Android and iOS is included in the “Mobile Development with C++” workload. For more information about targeting Android or iOS check out our posts tagged with the keywords “Android” and “iOS”.
If you are targeting Windows, you have a few options:
- Use Clang/LLVM; “Clang for Windows” includes instructions to install Clang/LLVM as a platform toolset in Visual Studio.
- Use Clang to target Windows with Clang/C2 (Clang frontend with Microsoft Code Generation).
Compiler options for the Clang/C2 compiler.
It might make sense to use Clang/C2 if you want to bring a codebase that takes advantage of Clang’s language features to the Windows platform. Since the code generation and optimization is handled by the MSVC backend, binaries produced by Clang/C2 are fully compatible with binaries produced by MSVC. You can learn more about Clang/C2 from Clang with Microsoft Codegen – or check out the latest updates in posts tagged with the keyword “clang”.
If your project targets Linux or Android, you can consider using GCC. Visual Studio’s C++ Android development natively supports building your projects with the GCC that ships with the Android NDK, just like it does for Clang. You can also target Linux – either remotely or locally with the Windows Subsystem for Linux – with GCC.
Compiler options for GCC.
Check out our post on Visual C++ for Linux Development for much more info about how to use Visual Studio to target Linux with GCC. If you are specifically interested in targeting WSL locally, check out Targeting WSL from Visual Studio.
Closing
Visual Studio also makes use of the Edison Design Group (EDG) frontend to provide flexible IntelliSense regardless of whether you use MSVC, Clang, or GCC to build your code. Visual Studio gives you access to a wide range of choices when it comes to C++ compilers. This way you can make sure that as you develop your code, it continues to compile against all major compilers.
Install Visual Studio today and give it a try. Please let us know if we have missed any compilers you use, and share your feedback as we look forward to improving your C++ development experience.
В интегрированной среде разработки все сведения, необходимые для построения проекта, предоставляются в виде свойств. Эти сведения включают в себя имя приложения, расширение (например, DLL, EXE, LIB), параметры компилятора, параметры компоновщика, параметры отладчика, настраиваемые этапы сборки и многие другие компоненты. Как правило, для просмотра и изменения этих свойств используются страницы свойств. для доступа к страницам свойств выберите Project свойствапроекта в главном меню или щелкните правой кнопкой мыши узел проекта в обозреватель решений и выберите пункт свойства.
Свойства по умолчанию
При создании проекта система задает значения для различных свойств. Значения по умолчанию варьируются в зависимости от типа проекта и параметров, выбранных в мастере приложений. Например, проект 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-разрядных приложений.
Дополнительные сведения настройке свойств отладочной сборки см. в следующих разделах:
Параметры компилятора и компоновщика C++
Параметры компилятора и компоновщика C++ находятся в узлах C/C++ и Компоновщик на панели слева в разделе Свойства конфигурации. Эти параметры непосредственно преобразуются в параметры командной строки, которые будут переданы компилятору. Чтобы ознакомиться с документацией по конкретному параметру, выберите параметр в центральной области и нажмите клавишу F1. также можно просмотреть документацию по всем параметрам в MSVC параметры компилятора и параметры компоновщика MSVC.
Значения каталога и пути
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++ может принимать макрос элемента, который применяется ко всем cpp-файлам в проекте. Этот тип макроса элемента соответствует метаданным ItemDefinitionGroup в MSBuild. Дополнительные сведения см. в разделе Определения элементов.Пользовательские макросы
Вы можете создавать пользовательские макросы для использования в качестве переменных в сборках проекта. Например, можно создать пользовательский макрос, предоставляющий значение пользовательскому шагу сборки или пользовательскому средству сборки. Пользовательский макрос — это пара "имя-значение". Для доступа к этому значению в файле проекта используется нотация $(name) .
Пользовательский макрос хранится на странице свойств. если проект еще не содержит страницу свойств, его можно создать, выполнив действия, описанные в разделе общий доступ или повторное использование Visual Studio параметры проекта.
Создание пользовательского макроса
В левой области диалогового окна выберите Пользовательские макросы. В правой области нажмите кнопку Добавить макрос, чтобы открыть диалоговое окно Добавление пользовательского макроса.
В диалоговом окне задайте имя и значение для макроса. Кроме того, можно установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Редактор свойств
Редактор свойств можно использовать для изменения некоторых строковых свойств и выбора макросов в качестве значений. Чтобы открыть редактор свойств, выберите свойство на странице свойств, а затем нажмите кнопку со стрелкой вниз справа. Если раскрывающийся список содержит Правка >, можно выбрать его, чтобы отобразить редактор свойств для этого свойства.
В редакторе свойств можно нажать кнопку Макросы, чтобы просмотреть доступные макросы и их текущие значения. На следующем рисунке показан редактор свойств для свойства Дополнительные каталоги включаемых файлов после нажатия кнопки Макросы. Если установлен флажок наследовать от родительского объекта или проекта по умолчанию и добавить новое значение, то оно добавляется к любому значению, наследуемому в данный момент. Если снять флажок, новое значение заменяет наследуемые значения. В большинстве случаев следует не снимать этот флажок.
Добавление каталога включения к набору каталогов по умолчанию
При добавлении каталога включения в проект важно не переопределять все каталоги по умолчанию. Правильный способ добавления каталога — добавить новый путь, например " C:\MyNewIncludeDir\ ", а затем добавить $(IncludePath) макрос к значению свойства.
Быстрый просмотр и поиск всех свойств
Без префикса:
поиск только в именах свойств (подстрока без учета регистра)." / " или " - ":
поиск только в параметрах компилятора (префикс без учета регистра)v :
поиск только в значениях (подстрока без учета регистра).Задание переменных среды для сборки
компилятор MSVC (cl.exe) распознает определенные переменные среды, в частности LIB ,, LIBPATH PATH и INCLUDE . при построении с помощью интегрированной среды разработки свойства, заданные на странице свойств каталоги VC++ , используются для задания этих переменных среды. если LIB LIBPATH значения, и INCLUDE уже заданы, например Командная строка разработчика, они заменяются значениями соответствующих свойств MSBuild. затем сборка добавляет значение свойства VC++ каталоги исполняемых каталогов в PATH . Для задания пользовательской переменной среды можно создать пользовательский макрос и затем установить флажок Задание данного макроса в качестве переменной среды в среде сборки.
Задание переменных среды для сеанса отладки
В правой области измените параметры проекта Среда или Объединение среды, а затем нажмите кнопку ОК.
Содержание раздела
Совместное или повторное использование параметров проекта Visual Studio
Создание .props файла с настраиваемыми параметрами сборки, которые можно использовать совместно или повторно.Наследование свойств проекта
Описывает порядок вычисления для .props .targets .vcxproj переменных среды,, файлов и в процессе сборки.Изменение свойств и целевых объектов без изменения файла проекта
Создание временных параметров сборки без изменения файла проекта.How can I switch compiling from C++14 to C++17 in Microsoft Visual Studio?
Or it's not avaiable in release versions of VS?
Which C++17 features? Which version of Visual Studio? If you're asking about C++17 why did you tag your question c++11 and c++14 ?
c++17 wasn't available, and I thought that those who are interested in specific versions of C++ knows better how to switch it. For example I want std::vector.emplace_back() to give back a reference to the newly created element. I know that +1 line, and I get that reference, But I would like to know the answer to my question anyway. VS Community 2015 (14.0.25431.01 Update 3)
You can't enable specific language dialects in VS, you get whatever they've implemented. You might have pretty good luck with standard library features voted into C++17 if you're using VS21015, but not so much with language features.
7 Answers 7
There's now a drop down (at least since VS 2017.3.5) where you can specifically select C++17. The available options are (under project > Properties > C/C++ > Language > C++ Language Standard)
- ISO C++14 Standard. msvc command line option: /std:c++14
- ISO C++17 Standard. msvc command line option: /std:c++17
- ISO C++20 Standard. msvc command line option: /std:c++20
Any Visual Studio:
- The latest draft standard. msvc command line option: /std:c++latest
The syntax -std:c++14 , -std:c++17 and -std:c++latest also works, e.g. when you prefer to manually enter compiler options (tested with VS2017).
Is that not clear from the answer already, or do you specifically mean - instead of the /std: switches I list?
I see the benefit when coming from gcc or clang . Then the - is less intrusive (however the syntax still differs slightly ( : instead of = )).
@AndreiKrasutski. There is no ISO C++20 yet but some support in /std:c++latest. The C++20 standard is expected next year. I Edited in a comment in my answer.
What C++ standard is used if there is nothing selected in Visual Studio 2017 > Project Properties > C / C++ > Language > C++ Standard dropdown? I have 14, 17 and latest in the dropdown, but none is selected, so how do I find what c++ standard is used in a project in that case?
MSBuild (Visual Studio project/solution *.vcproj/*.sln):
Add to Additional options in Project Settings: /std:c++latest to enable latest features - currently C++17 as of VS2017, VS2015 Update 3.
/permissive- will disable non-standard C++ extensions and will enable standard conformance in VS2017.
VS2017 supports: /std:[c++14|c++17|c++latest] now. These flags can be set via the project's property pages:
- Open the project's Property Pages dialog box. For details, see Working with Project Properties.
- Select Configuration Properties, C/C++, Language.
- In C++ Language Standard, choose the language standard to support from the dropdown control, then choose OK or Apply to save your changes.
CMake:
Visual Studio 2017 (15.7+) supports CMake projects. CMake makes it possible to enable modern C++ features in various ways. The most basic option is to enable a modern C++ standard by setting a target's property in CMakeLists.txt:
In the case of an interface library:
Visual Studio 2015 Update 3 does not support the C++17 feature you are looking for ( emplace_back() returning a reference).
Visual studio 2019 version:
The drop down menu was moved to:
- Right click on project (not solution)
- Properties (or Alt + Enter)
- From the left menu select Configuration Properties
- General
- In the middle there is an option called "C++ Language Standard"
- Next to it is the drop down menu
- Here you can select Default, ISO C++ 14, 17 or latest
Remember to do this for 'All Configurations' and 'All Platforms'. That's from someone who's spent an 2 hour figuring out why it still doesn't work! But thanks for the answer.
In the vs2019 that Unreal setup, there is no Configuration Settings -> General -> C++ Language Standard. Can it be added? There is an nmake -> Additional Options that is set to /std:c++14 . but changing it to c++17 doesn't seem to work.
If bringing existing Visual Studio 2015 solution into Visual Studio 2017 and you want to build it with c++17 native compiler, you should first Retarget the solution/projects to v141 , THEN the dropdown will appear as described above ( Configuration Properties -> C/C++ -> Language -> Language Standard)
I configured it to c++17 in project properties, still I get the same issue of "There is no execution library". I am first time experimenting with C++17 parallel features. This is I am doing on window with visual studio 2017.
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
VS Code 2020 version
In tasks.json file, (after you build and debug with the g++-9 )
Add -std=c++2a for 2020 features ( c++1z for 2017 features). Add -fconcepts to use concept keyword
now compile and you can use the 2020 features.
But the question is not asking "only-for" VS Studio. If you re-read the question, at the end of the line "it's not avaiable in release versions of VS?". The question is flexible, no need to be strict.
This question is not that flexible, and if it were, it would need to be closed. It wouldn't be focused enough. VS Code is not a different version of Visual studio. One is an Integrated Development Environment, and one is an Editor. One pulls up the code that you write, the other is embedded into the file system of the project it is working on. One is funded by Microsoft, one is developed by Microsoft. One is portable to Linux, one is not. A configuration for one, will not work for the other. You might as well answer how to compile C++17 in Notepad.
Читайте также: