I know, CMAKE_CXX_COMPILER_IMPORT_STD was experimental, but usefully and well documented.
Now many projects (i.e. boost, beman, magic_enum, …) has to change there code like this:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 511c0f1..d449ad8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
-# CMake 3.30 is required for C++23 `import std` support;
-cmake_minimum_required(VERSION 3.31...4.4)
+# Starting with CMake 3.30 is was required for C++23 `import std` support;
+cmake_minimum_required(VERSION 3.31...4.5)
option(
CMAKE_CXX_SCAN_FOR_MODULES
@@ -73,10 +73,14 @@ if(CMAKE_GENERATOR STREQUAL "Ninja" AND FMT_MODULE)
if(FMT_MODULE)
# Tell CMake that we explicitly want `import std`.
# This will initialize the property on all targets declared after this to 1
- if(${CMAKE_CXX_STANDARD} IN_LIST CMAKE_CXX_COMPILER_IMPORT_STD)
+ if(CMAKE_CXX_STDLIB_MODULES_JSON AND CMAKE_VERSION VERSION_GREATER_EQUAL "4.5.0")
set(CMAKE_CXX_MODULE_STD ON)
else()
- set(CMAKE_CXX_MODULE_STD OFF)
+ if(${CMAKE_CXX_STANDARD} IN_LIST CMAKE_CXX_COMPILER_IMPORT_STD)
+ set(CMAKE_CXX_MODULE_STD ON)
+ else()
+ set(CMAKE_CXX_MODULE_STD OFF)
+ endif()
endif()
if(CMAKE_CXX_MODULE_STD)
or
bash-5.3$ git diff CMakeLists.txt
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a4baedc..e5f2d0f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.30...4.5)
+cmake_minimum_required(VERSION 3.31...4.5)
include(cmake/prelude.cmake)
@@ -46,8 +46,13 @@ if(PROJECT_IS_TOP_LEVEL)
option(BOOST_USE_MODULES "Do build with CXX_MODULES if possible" OFF)
if(BOOST_USE_MODULES)
set(CMAKE_CXX_SCAN_FOR_MODULES ON)
- if(NOT CMAKE_CXX_STANDARD GREATER_EQUAL 23)
- set(CMAKE_CXX_MODULE_STD OFF)
+ if(CMAKE_CXX_STDLIB_MODULES_JSON AND CMAKE_VERSION VERSION_GREATER_EQUAL "4.5.0")
+ set(CMAKE_CXX_MODULE_STD ON)
+ list(APPEND CMAKE_CXX_COMPILER_IMPORT_STD ${CMAKE_CXX_STANDARD})
+ else()
+ if(NOT CMAKE_CXX_STANDARD GREATER_EQUAL 23)
+ set(CMAKE_CXX_MODULE_STD OFF)
+ endif()
endif()
else()
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
bash-5.3$
@anarthal FYI