diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index edb6087..45f0c0f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -152,7 +152,14 @@ subprocess_set_cxx_flags(test98.cpp "-std=gnu++98") subprocess_set_cxx_flags(test11.cpp "-std=c++11" "-Wno-c++98-compat") subprocess_set_cxx_flags(test14.cpp "-std=c++14" "-Wno-c++98-compat") subprocess_set_cxx_flags(test17.cpp "-std=c++17" "-Wno-c++98-compat") -subprocess_set_cxx_flags(test20.cpp "-std=c++20" "-Wno-c++98-compat") +# GCC 8 and clang 9 only accept the pre-release spelling -std=c++2a. +include(CheckCXXCompilerFlag) +check_cxx_compiler_flag("-std=c++20" SUBPROCESS_CXX_HAS_STD_CXX20) +if(SUBPROCESS_CXX_HAS_STD_CXX20) + subprocess_set_cxx_flags(test20.cpp "-std=c++20" "-Wno-c++98-compat") +else() + subprocess_set_cxx_flags(test20.cpp "-std=c++2a" "-Wno-c++98-compat") +endif() subprocess_set_cxx_flags(pre_windows.cpp "" "-Wno-c++98-compat") subprocess_set_cxx_flags(post_windows.cpp "" "-Wno-c++98-compat")