CMakeLists: Force C++20 on MSVC due to conflicts with C++23 modules

The latest version of MSVC STL brings C++23 standard library modules, which conflict with precompiled headers.
Disabling with /experimental:module- has no effect, so force C++20 in the meantime while we wait for module support in other compilers.
This commit is contained in:
Morph 2023-06-06 20:19:44 -04:00
parent 238e46ec93
commit f62f43c0da
2 changed files with 5 additions and 3 deletions

View File

@ -255,7 +255,7 @@ endif()
# boost asio's concept usage doesn't play nicely with some compilers yet. # boost asio's concept usage doesn't play nicely with some compilers yet.
add_definitions(-DBOOST_ASIO_DISABLE_CONCEPTS) add_definitions(-DBOOST_ASIO_DISABLE_CONCEPTS)
if (MSVC) if (MSVC)
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/std:c++latest>) add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/std:c++20>)
# boost still makes use of deprecated result_of. # boost still makes use of deprecated result_of.
add_definitions(-D_HAS_DEPRECATED_RESULT_OF) add_definitions(-D_HAS_DEPRECATED_RESULT_OF)

View File

@ -43,7 +43,7 @@ if (MSVC)
/Zo /Zo
/permissive- /permissive-
/EHsc /EHsc
/std:c++latest /std:c++20
/utf-8 /utf-8
/volatile:iso /volatile:iso
/Zc:externConstexpr /Zc:externConstexpr
@ -51,8 +51,10 @@ if (MSVC)
/Zc:throwingNew /Zc:throwingNew
/GT /GT
# Modules
/experimental:module- # Disable module support explicitly due to conflicts with precompiled headers
# External headers diagnostics # External headers diagnostics
/experimental:external # Enables the external headers options. This option isn't required in Visual Studio 2019 version 16.10 and later
/external:anglebrackets # Treats all headers included by #include <header>, where the header file is enclosed in angle brackets (< >), as external headers /external:anglebrackets # Treats all headers included by #include <header>, where the header file is enclosed in angle brackets (< >), as external headers
/external:W0 # Sets the default warning level to 0 for external headers, effectively turning off warnings for external headers /external:W0 # Sets the default warning level to 0 for external headers, effectively turning off warnings for external headers