如何在Visual Studio中启用C++17编译?

问题描述 投票:0回答:6

我想使用 C++17 功能。

如何在 Microsoft Visual Studio 中将编译从 C++14 切换到 C++17?

或者在 VS 的发布版本中不可用?

c++ visual-studio compilation c++17
6个回答
266
投票

现在有一个下拉菜单(至少从 VS 2017.3.5 开始),您可以在其中专门选择 C++17。可用选项有(在项目 > 属性 > C/C++ > 语言 > C++ 语言标准下)

  • ISO C++14 标准。 msvc 命令行选项:
    /std:c++14
  • ISO C++17 标准。 msvc 命令行选项:
    /std:c++17

Visual Studio 2022(MSVC C++20 和 /std:c++20 开关 - C++ 团队博客):

  • ISO C++20 标准。 msvc 命令行选项:
    /std:c++20

任何 Visual Studio:

  • 最新标准草案。 msvc 命令行选项:
    /std:c++latest

39
投票

MSBuild(Visual Studio 项目/解决方案 *.vcproj/*.sln:

添加到项目设置中的其他选项:

/std:c++latest
以启用最新功能 - 目前从 VS2017、VS2015 Update 3 开始为 C++17。

https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/

/permissive-
将禁用非标准 C++ 扩展,并在 VS2017 中启用标准一致性。

https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/

编辑(2018 年 10 月): 最新的 VS2017 功能记录在此处:

https://learn.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version

VS2017 现在支持:

/std:[c++14|c++17|c++latest]
。这些标志可以通过项目的属性页设置:

在Visual Studio开发中设置该编译器选项 环境

  1. 打开项目的属性页对话框。详细信息请参见工作 与项目属性。
  2. 选择配置属性、C/C++、 语言。
  3. 在C++语言标准中,选择要使用的语言标准 从下拉控件中选择支持,然后选择“确定”或“应用”保存 你的改变。

CMake

Visual Studio 2017 (15.7+) 支持 CMake 项目。 CMake 可以通过多种方式启用现代 C++ 功能。最基本的选项是通过在 CMakeLists.txt 中设置目标的属性来启用现代 C++ 标准:

add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
  PROPERTY
    # Enable C++17 standard compliance
    CXX_STANDARD 17
)

对于接口库:

add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
  INTERFACE
    # Enable C++17 standard compliance
    cxx_std_17
)

12
投票

Visual Studio 2019版本:

下拉菜单移至:

  • 右键单击项目(不是解决方案)
  • 属性(或Alt + Enter)
  • 从左侧菜单中选择配置属性
  • 一般
  • 中间有一个选项叫“C++ Language Standard”
  • 旁边是下拉菜单
  • 在这里您可以选择默认、ISO C++ 14、17 或最新


6
投票

如果将现有的 Visual Studio 2015 解决方案引入 Visual Studio 2017 并且您想使用 c++17 本机编译器构建它,您应该首先将解决方案/项目重新定位到 v141 ,然后下拉列表将按上述方式显示(配置属性 -> C/C++ -> 语言 -> 语言标准)


-1
投票

VS Code 2020 版本

tasks.json
文件中,(使用
g++-9
构建并调试之后)

为 2020 年功能添加

-std=c++2a
(为 2017 年功能添加
c++1z
)。 添加
-fconcepts
以使用
concept
关键字

"args": [
   "-std=c++2a",
   "-fconcepts",
   "-g",
   "${file}",
   "-o",
   "${fileDirname}/${fileBasenameNoExtension}"
],

现在编译,你就可以使用2020年的功能了。

© www.soinside.com 2019 - 2024. All rights reserved.