@@ -20,22 +20,32 @@ include(CMakeParseArguments)
20
20
21
21
if (NOT PYBIND11_CPP_STANDARD AND NOT CMAKE_CXX_STANDARD)
22
22
if (NOT MSVC )
23
- check_cxx_compiler_flag("-std=c++14" HAS_CPP14_FLAG)
24
-
25
- if (HAS_CPP14_FLAG)
26
- set (PYBIND11_CPP_STANDARD -std=c++14)
23
+ if (CMAKE_CXX14_EXTENSION_COMPILE_OPTION)
24
+ set (PYBIND11_CPP_STANDARD ${CMAKE_CXX14_EXTENSION_COMPILE_OPTION} )
25
+ elseif (CMAKE_CXX14_STANDARD_COMPILE_OPTION)
26
+ set (PYBIND11_CPP_STANDARD ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} )
27
+ elseif (CMAKE_CXX11_EXTENSION_COMPILE_OPTION)
28
+ set (PYBIND11_CPP_STANDARD ${CMAKE_CXX11_EXTENSION_COMPILE_OPTION} )
29
+ elseif (CMAKE_CXX11_STANDARD_COMPILE_OPTION)
30
+ set (PYBIND11_CPP_STANDARD ${CMAKE_CXX11_STANDARD_COMPILE_OPTION} )
27
31
else ()
28
- check_cxx_compiler_flag("-std=c++11" HAS_CPP11_FLAG )
29
- if (HAS_CPP11_FLAG )
30
- set (PYBIND11_CPP_STANDARD -std=c++11 )
32
+ check_cxx_compiler_flag("-std=c++14" HAS_CPP14_FLAG )
33
+ if (HAS_CPP14_FLAG )
34
+ set (PYBIND11_CPP_STANDARD -std=c++14 )
31
35
else ()
32
- message (FATAL_ERROR "Unsupported compiler -- pybind11 requires C++11 support!" )
36
+ check_cxx_compiler_flag("-std=c++11" HAS_CPP11_FLAG)
37
+ if (HAS_CPP11_FLAG)
38
+ set (PYBIND11_CPP_STANDARD -std=c++11)
39
+ endif ()
33
40
endif ()
34
41
endif ()
35
42
elseif (MSVC )
36
43
set (PYBIND11_CPP_STANDARD /std:c++14)
37
44
endif ()
38
45
46
+ if (NOT PYBIND11_CPP_STANDARD)
47
+ message (FATAL_ERROR "Unsupported compiler -- pybind11 requires C++11 support!" )
48
+ endif ()
39
49
set (PYBIND11_CPP_STANDARD ${PYBIND11_CPP_STANDARD} CACHE STRING
40
50
"C++ standard flag, e.g. -std=c++11, -std=c++14, /std:c++14. Defaults to C++14 mode." FORCE)
41
51
endif ()
0 commit comments