From: vsr Date: Mon, 14 Sep 2020 08:50:01 +0000 (+0300) Subject: Correctly set C++ standard (default value is set to 11) X-Git-Tag: V2_4_5~4 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=79ce1736c8b18ebc2110968661fcaf5db501b7d3;p=tools%2Flibbatch.git Correctly set C++ standard (default value is set to 11) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index c97961f..841de12 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,23 +63,27 @@ ENDIF() INCLUDE(CheckCXXCompilerFlag) -SET(LIBBATCH_NO_CXX11_SUPPORT FALSE CACHE BOOL "Switch OFF C++-11 standard") -IF(NOT LIBBATCH_NO_CXX11_SUPPORT) - # C++11 support - CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) - IF(COMPILER_SUPPORTS_CXX11) - MESSAGE(STATUS "Enable C++11 support") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - ELSE() - CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) - IF(COMPILER_SUPPORTS_CXX0X) - MESSAGE(STATUS "Enable C++0x support") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") - ELSE() - MESSAGE(WARNING "Compiler ${CMAKE_CXX_COMPILER} has no C++11 support.") - ENDIF() +# Option: C++ standard to use +# Note: CMake by default enables C++ extensions; they can be disabled by additionally +# specifying -DCMAKE_CXX_EXTENSIONS=OFF +SET(LIBBATCH_CXX_STANDARD 11 CACHE STRING "C++ standard to use") +SET(_supported_standards 11 14 17 20) +SET(_standard_ok FALSE) +FOREACH(_standard ${_supported_standards}) + IF(LIBBATCH_CXX_STANDARD STREQUAL _standard) + SET(_standard_ok TRUE) + BREAK() ENDIF() +ENDFOREACH() +IF(NOT _standard_ok) + MESSAGE(FATAL_ERROR "Unsupported C++ standard: ${LIBBATCH_CXX_STANDARD}; allowed values: ${_supported_standards}") ENDIF() +UNSET(_supported_standards) +UNSET(_standard) +UNSET(_standard_ok) +MESSAGE(STATUS "Setting C++ standard to ${LIBBATCH_CXX_STANDARD}") +SET(CMAKE_CXX_STANDARD ${LIBBATCH_CXX_STANDARD}) +SET(CMAKE_CXX_STANDARD_REQUIRED ON) IF(NOT (WIN32 OR APPLE)) SET(LIBBATCH_DEBUG_WARNINGS FALSE CACHE BOOL "Print more compiler warnings")