forked from InsightSoftwareConsortium/ITK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
itkCompilerChecks.cmake
40 lines (35 loc) · 1.6 KB
/
itkCompilerChecks.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Minimum compiler version check: GCC
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7)
message(FATAL_ERROR "GCC 7 or later is required.")
endif()
# Minimum compiler version check: LLVM Clang
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5)
message(FATAL_ERROR "LLVM Clang 5 or later is required.")
endif()
# Minimum compiler version check: Apple Clang >= 10.0.0 (Xcode 10.0)
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0.0)
message(FATAL_ERROR "Apple Clang 10.0.0 or later is required.")
endif()
# Minimum compiler version check: Microsoft C/C++
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.20)
message(FATAL_ERROR "Microsoft Visual Studio 2019 16.0 (MSVC 19.20) or later is required.")
endif()
# Minimum compiler version check: Intel C++ (ICC)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.1)
message(FATAL_ERROR "Intel C++ (ICC) 19.1 or later is required.")
endif()
# 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++17 compiler flags enabled
# Wrap this in an escape hatch for unknown compilers
if(NOT CMAKE_CXX_STANDARD)
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)
endif()
if(NOT CMAKE_CXX_EXTENSIONS)
set(CMAKE_CXX_EXTENSIONS OFF)
endif()
endif()