gpt4 book ai didi

c++ - 如何在 cmake 中启用 `/std:c++latest`?

转载 作者:行者123 更新时间:2023-12-03 06:53:23 24 4
gpt4 key购买 nike

我可以设置CMAKE_CXX_STANDARD17获取 /std:c++17 ,但我无法将其设置为 latest , 我可以吗?我想我可以暴力破解它

if (MSVC)
add_compiler_options(/std:c++latest)
endif()
当然,但是有没有一种惯用的方式来获取 /std:c++latest ,甚至可能与工具链无关?
编辑 为什么会有人想要这个?与 Clang 和 GCC 不同,MSVC 似乎没有定义 /std:c++2a启用后 C++17 功能。它只是使用 /std:c++latest为了那个原因。如果我正在使用一组已知的编译器构建代码库,我知道我可以使用哪些 C++20 特性,但我需要告诉构建系统启用每个编译器的所有功能。

最佳答案

直到 CMake 3.20.3,如果你要求 C++20,使用 set(CMAKE_CXX_STANDARD 20) , 你会得到 -std:c++latest .证明:

  if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.12.25835)
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest")
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest")
endif()
(来自 cmake 源代码中的 Modules/Compiler/MSVC-CXX.cmake)
更新:从 CMake 3.20.4 开始, set(CMAKE_CXX_STANDARD 20)让你 -std:c++20 ,所以你需要 set(CMAKE_CXX_STANDARD 23)获取 -std:c++latest -- 假设您的 MSVC 编译器版本是 16.11 Preview 1 或更高版本(请参阅 cmake commit 3aaf1d91bf353)。

关于c++ - 如何在 cmake 中启用 `/std:c++latest`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64889383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com