diff --git a/CMLibCompilerFlags.cmake b/CMLibCompilerFlags.cmake index 7afb7c6..a68a4ff 100644 --- a/CMLibCompilerFlags.cmake +++ b/CMLibCompilerFlags.cmake @@ -34,16 +34,25 @@ endif() # Выбор стандарта по умолчанию (можно переопределить в проекте) set(CMAKE_CXX_STANDARD_REQUIRED YES) -check_cxx_compiler_flag(-std=c++14 HAVE_FLAG_STD_CXX14) -if(HAVE_FLAG_STD_CXX14) - set(CMAKE_CXX_STANDARD 14) - check_cxx_compiler_flag(-std=gnu++14 HAVE_FLAG_STD_GNUXX14) - if(HAVE_FLAG_STD_GNUXX14) +check_cxx_compiler_flag(-std=c++17 HAVE_FLAG_STD_CXX17) +if(HAVE_FLAG_STD_CXX17) + set(CMAKE_CXX_STANDARD 17) + check_cxx_compiler_flag(-std=gnu++17 HAVE_FLAG_STD_GNUXX17) + if(HAVE_FLAG_STD_GNUXX17) set(CMAKE_CXX_EXTENSIONS YES) endif() else() - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_CXX_EXTENSIONS YES) + check_cxx_compiler_flag(-std=c++14 HAVE_FLAG_STD_CXX14) + if(HAVE_FLAG_STD_CXX14) + set(CMAKE_CXX_STANDARD 14) + check_cxx_compiler_flag(-std=gnu++14 HAVE_FLAG_STD_GNUXX14) + if(HAVE_FLAG_STD_GNUXX14) + set(CMAKE_CXX_EXTENSIONS YES) + endif() + else() + set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_EXTENSIONS YES) + endif() endif() # Common configuration for GCC, clang and Intel.