如何启用C++;17 2019年在Visual Studio社区中编译cmake项目?

如何启用C++;17 2019年在Visual Studio社区中编译cmake项目?,cmake,c++17,visual-studio-2019,Cmake,C++17,Visual Studio 2019,在发布这个问题之前,我已经阅读了StackOverflow上发布的很多帖子。我仍然没有找到一个有效的答案。 我看到有些人说这个消息是重复的,但事实并非如此 我查过了 但我想把它应用到MSVC的特例中,因为MSVC是一个特例 我在out文件夹中尝试过: 设置目标属性(myTarget属性 CXX_标准17 CXX_标准_必需是 CXX_扩展号 ) 例如,我读过: 但这些并不完全适用于我的问题 事实上,我最近卸载了Visual Studio Community 2017,并安装了Visual

在发布这个问题之前,我已经阅读了StackOverflow上发布的很多帖子。我仍然没有找到一个有效的答案。 我看到有些人说这个消息是重复的,但事实并非如此

我查过了 但我想把它应用到MSVC的特例中,因为MSVC是一个特例

我在
out
文件夹中尝试过: 设置目标属性(myTarget属性 CXX_标准17 CXX_标准_必需是 CXX_扩展号 )

例如,我读过:

但这些并不完全适用于我的问题

事实上,我最近卸载了Visual Studio Community 2017,并安装了Visual Studio Community 2019

我想编译一段源于Bartłomiej Filipek思想的代码

代码如下。我用了CMake。在默认的CMake代码中,我添加了以下内容:

if (MSVC_VERSION GREATER_EQUAL "1900")
    include(CheckCXXCompilerFlag)
    CHECK_CXX_COMPILER_FLAG("/std:c++latest" _cpp_latest_flag_supported)
    if (_cpp_latest_flag_supported)
        add_compile_options("/std:c++latest")
    endif()
endif()
我有以下编译错误:

Erreur  C2039   'align_val_t' : not a member of 'std'   
因此,这意味着不考虑C++17

默认情况下作为CMake文件的CMake版本由以下内容指示:

cmake_minimum_required (VERSION 3.8)
但在StackOverflow的一些页面上说,自CMake版本3.10以来,该标志已被考虑在内

然而,VSC 19提出了CMake 3.8

如果是最新版本,那就很奇怪了

那么,我该如何解决这个问题呢

#包括
#包括
#包括
#包括
#包括
#包括
void*运算符新建(std::size\u t size,std::align\u val\u t align){
//#ifdef硕士学位
#如果已定义(_WIN32)| |已定义(uu CYGWIN_uuu)
自动ptr=_-aligned_-malloc(大小、静态_-cast(align));

STD::您可以参考C++标准规范,以跨平台项目的通用方式。如果在 LaRePvk[/Cord]子目录下创建库/可执行文件,则它们不受“进入目录后发布的<代码> AddioCypRelyOpvs/Cuth>的影响(使用<代码> AddioSudiDirecTyle)(调用)。您需要首先调整标志,然后进入子目录。您可能已经更新了问题中的文本,但如何更新代码?您在
CMakeLists.txt
中的确切位置创建了可执行文件或库?(您在
CMakeLists.txt
中有一些注释,但它们不是英文的…).我之前的评论只是对可执行文件/库位置的猜测,但对于堆栈溢出,我们更愿意理解代码而不进行猜测。
# CMakeList.txt : fichier projet CMake de niveau supérieur, effectuez une configuration globale
# et incluez les sous-projets ici.
#
cmake_minimum_required (VERSION 3.8)

project ("lameduck")

 #Incluez les sous-projets.
add_subdirectory ("lameduck")

if (MSVC_VERSION GREATER_EQUAL "1900")
    include(CheckCXXCompilerFlag)
    CHECK_CXX_COMPILER_FLAG("/std:c++latest" _cpp_latest_flag_supported)
    if (_cpp_latest_flag_supported)
        add_compile_options("/std:c++latest")
    endif()
endif()