mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-20 21:50:53 -06:00
Intel: Fix detection of C++ 14/17 modes on Linux/macOS
The Intel Classic C++ compiler is based on EDG. It does not always define `__cplusplus` correctly, but does define feature macros that we can use to distinguish these modes.
This commit is contained in:
@@ -58,6 +58,14 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
|
|||||||
# endif
|
# endif
|
||||||
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
|
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
|
||||||
# define CXX_STD _MSVC_LANG
|
# define CXX_STD _MSVC_LANG
|
||||||
|
#elif defined(__INTEL_COMPILER)
|
||||||
|
# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes)
|
||||||
|
# define CXX_STD CXX_STD_17
|
||||||
|
# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi)
|
||||||
|
# define CXX_STD CXX_STD_14
|
||||||
|
# else
|
||||||
|
# define CXX_STD __cplusplus
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
# define CXX_STD __cplusplus
|
# define CXX_STD __cplusplus
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -27,6 +27,14 @@ struct Outputter;
|
|||||||
# endif
|
# endif
|
||||||
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
|
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
|
||||||
# define CXX_STD _MSVC_LANG
|
# define CXX_STD _MSVC_LANG
|
||||||
|
#elif defined(__INTEL_COMPILER)
|
||||||
|
# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes)
|
||||||
|
# define CXX_STD CXX_STD_17
|
||||||
|
# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi)
|
||||||
|
# define CXX_STD CXX_STD_14
|
||||||
|
# else
|
||||||
|
# define CXX_STD __cplusplus
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
# define CXX_STD __cplusplus
|
# define CXX_STD __cplusplus
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user