26 lines
1.0 KiB
CMake
26 lines
1.0 KiB
CMake
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
|
|
message (FATAL_ERROR "C++20 module needs Clang++-16 or up")
|
|
endif ()
|
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
|
|
message (FATAL_ERROR "C++20 module needs g++-14 or up")
|
|
endif ()
|
|
else ()
|
|
message (FATAL_ERROR "Unsupported compiler: ${CMAKE_CXX_COMPILER_ID}")
|
|
endif ()
|
|
|
|
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.28)
|
|
# CMake 3.28 has official support of C++20 modules
|
|
elseif (CMAKE_VERSION VERSION_GREATER_EQUAL 3.27)
|
|
set (CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "aa1f7df0-828a-4fcd-9afc-2dc80491aca7")
|
|
elseif (CMAKE_VERSION VERSION_GREATER_EQUAL 3.26)
|
|
set (CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE "")
|
|
set (CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
|
|
set (CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a")
|
|
endif ()
|
|
|
|
set (CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
# C++ extension does work with C++ module support so far
|
|
set (CMAKE_CXX_EXTENSIONS OFF)
|