From 3c69386a197d7d773d7fa03cced18cb114ee0555 Mon Sep 17 00:00:00 2001 From: vsr Date: Mon, 14 Sep 2020 11:33:05 +0300 Subject: [PATCH] Add option to choose C++ standard; default value is set to 11 (requries CMake minimal version 3.1) --- cmake/SalomeMacros.cmake | 1 + cmake/SalomeSetupPlatform.cmake | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cmake/SalomeMacros.cmake b/cmake/SalomeMacros.cmake index 33078a9..d24b042 100644 --- a/cmake/SalomeMacros.cmake +++ b/cmake/SalomeMacros.cmake @@ -27,6 +27,7 @@ IF(WIN32) CMAKE_POLICY(SET CMP0020 OLD) # Disable automatic linking to qtmain.lib ENDIF(WIN32) CMAKE_POLICY(SET CMP0053 NEW) # For correct Qt 5 detection procedure +CMAKE_POLICY(SET CMP0057 NEW) # For IF(IN_LIST) operator IF(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12) CMAKE_POLICY(SET CMP0074 NEW) # Use ROOT variables when detecting packages ENDIF() diff --git a/cmake/SalomeSetupPlatform.cmake b/cmake/SalomeSetupPlatform.cmake index abfb734..a5f713a 100644 --- a/cmake/SalomeSetupPlatform.cmake +++ b/cmake/SalomeSetupPlatform.cmake @@ -106,7 +106,16 @@ IF(COMPILER_SUPPORTS_NO_OPERATOR_NAMES) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-operator-names") ENDIF() -SET(CMAKE_CXX_STANDARD 17) +# C++ standard to use; NOTE: extensions are not allowed! +SET(SALOME_CXX_STANDARD 11 CACHE STRING "C++ standard to use") +SET(_supported_standards 11 14 17 20) +IF(NOT ${SALOME_CXX_STANDARD} IN_LIST _supported_standards) + MESSAGE(FATAL_ERROR "Unsupported C++ standard: ${SALOME_CXX_STANDARD}; allowed values: ${_supported_standards}") +ENDIF() +UNSET(_supported_standards) +MESSAGE(STATUS "Setting C++ standard to ${SALOME_CXX_STANDARD}") +SET(CMAKE_CXX_STANDARD ${SALOME_CXX_STANDARD}) +SET(CMAKE_CXX_EXTENSIONS OFF) SET(CMAKE_CXX_STANDARD_REQUIRED ON) # Fight warnings -- 2.39.2