diff --git a/CMake/ITKInitializeCXXStandard.cmake b/CMake/ITKInitializeCXXStandard.cmake index 5345230b569..2f0b90a8ea9 100644 --- a/CMake/ITKInitializeCXXStandard.cmake +++ b/CMake/ITKInitializeCXXStandard.cmake @@ -1,6 +1,6 @@ ## Set the default target properties for ITK if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 14) # Supported values are 14, 17, 20, and 23. + set(CMAKE_CXX_STANDARD 17) # Supported values are 17, 20, and 23. endif() if(NOT CMAKE_CXX_STANDARD_REQUIRED) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/CMake/itkCompilerChecks.cmake b/CMake/itkCompilerChecks.cmake index e13a96b2821..3c47c41e1f8 100644 --- a/CMake/itkCompilerChecks.cmake +++ b/CMake/itkCompilerChecks.cmake @@ -28,13 +28,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND message(FATAL_ERROR "Intel C++ (ICC) 17.0 or later is required.") endif () -# Make sure we have C++14 enabled. -if(NOT ITK_IGNORE_CMAKE_CXX14_CHECKS) +# Make sure we have C++17 enabled. +if(NOT ITK_IGNORE_CMAKE_CXX17_CHECKS) # Needed to make sure libraries and executables not built by the - # itkModuleMacros still have the C++14 compiler flags enabled + # itkModuleMacros still have the C++17 compiler flags enabled # Wrap this in an escape hatch for unknown compilers if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 14) # Supported values are 14, 17, 20, and 23. + set(CMAKE_CXX_STANDARD 17) # Supported values are 17, 20, and 23. endif() if(NOT CMAKE_CXX_STANDARD_REQUIRED) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/CMakeLists.txt b/CMakeLists.txt index 74f424e6b46..54df5f0e9bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,9 +33,9 @@ endforeach() include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/ITKInitializeCXXStandard.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/ITKInitializeBuildType.cmake) -# ==== Define language standard configurations requiring at least c++14 standard -if(CMAKE_CXX_STANDARD EQUAL "98" OR CMAKE_CXX_STANDARD LESS "14") - message(FATAL_ERROR "C++98 to C++11 are no longer supported in ITK version 5.3 and greater.") +# ==== Define language standard configurations requiring at least c++17 standard +if(CMAKE_CXX_STANDARD EQUAL "98" OR CMAKE_CXX_STANDARD LESS "17") + message(FATAL_ERROR "C++98 to C++14 are no longer supported in ITK version 5.4 and greater.") endif() set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH}) diff --git a/Wrapping/macro_files/itk_auto_load_submodules.cmake b/Wrapping/macro_files/itk_auto_load_submodules.cmake index 386547db3fe..81873300b63 100644 --- a/Wrapping/macro_files/itk_auto_load_submodules.cmake +++ b/Wrapping/macro_files/itk_auto_load_submodules.cmake @@ -22,9 +22,9 @@ function(generate_castxml_commandline_flags) # Avoid missing omp.h include set(_castxml_cc_flags ${CMAKE_CXX_FLAGS}) if(CMAKE_CXX_EXTENSIONS) - set(_castxml_cc_flags "${_castxml_cc_flags} ${CMAKE_CXX14_EXTENSION_COMPILE_OPTION}") + set(_castxml_cc_flags "${_castxml_cc_flags} ${CMAKE_CXX17_EXTENSION_COMPILE_OPTION}") else() - set(_castxml_cc_flags "${_castxml_cc_flags} ${CMAKE_CXX14_STANDARD_COMPILE_OPTION}") + set(_castxml_cc_flags "${_castxml_cc_flags} ${CMAKE_CXX17_STANDARD_COMPILE_OPTION}") endif() # Aggressive optimization flags cause cast_xml to give invalid error conditions