diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2022-05-24 21:20:42 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2022-06-14 23:27:30 (GMT) |
commit | ff30a5397d804b9de564d54868bd5fdf504361c2 (patch) | |
tree | 7e11794498c6fc46f9f2af1ee00b25432ac866e6 | |
parent | fb289dfcd9be3ceb9dcca20b3f51b779d77e01ee (diff) | |
download | CMake-ff30a5397d804b9de564d54868bd5fdf504361c2.zip CMake-ff30a5397d804b9de564d54868bd5fdf504361c2.tar.gz CMake-ff30a5397d804b9de564d54868bd5fdf504361c2.tar.bz2 |
cmExperimental: add an experimental feature to handle C++ modules
-rw-r--r-- | Help/dev/experimental.rst | 17 | ||||
-rw-r--r-- | Source/cmExperimental.cxx | 9 | ||||
-rw-r--r-- | Source/cmExperimental.h | 2 |
3 files changed, 27 insertions, 1 deletions
diff --git a/Help/dev/experimental.rst b/Help/dev/experimental.rst index 7638d22..2c2eb21 100644 --- a/Help/dev/experimental.rst +++ b/Help/dev/experimental.rst @@ -7,6 +7,23 @@ See documentation on `CMake Development`_ for more information. .. _`CMake Development`: README.rst +Features are gated behind ``CMAKE_EXPERIMENTAL_`` variables which must be set +to specific values in order to enable their gated behaviors. Note that the +specific values will change over time to reinforce their experimental nature. +When used, a warning will be generated to indicate that an experimental +feature is in use and that the affected behavior in the project is not part of +CMake's stability guarantees. + +C++20 Module APIs +================= + +Variable: ``CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API`` +Value: ``17be90bd-a850-44e0-be50-448de847d652`` + +In order to support C++20 modules, there are a number of behaviors that have +CMake APIs to provide the required features to build and export them from a +project. + C++20 Module Dependencies ========================= diff --git a/Source/cmExperimental.cxx b/Source/cmExperimental.cxx index 5689714..e815d0e 100644 --- a/Source/cmExperimental.cxx +++ b/Source/cmExperimental.cxx @@ -25,7 +25,14 @@ struct FeatureData std::string const Variable; std::string const Description; bool Warned; -} LookupTable[] = {}; +} LookupTable[] = { + // CxxModuleCMakeApi + { "17be90bd-a850-44e0-be50-448de847d652", + "CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API", + "CMake's C++ module support is experimental. It is meant only for " + "experimentation and feedback to CMake developers.", + false }, +}; static_assert(sizeof(LookupTable) / sizeof(LookupTable[0]) == static_cast<size_t>(cmExperimental::Feature::Sentinel), "Experimental feature lookup table mismatch"); diff --git a/Source/cmExperimental.h b/Source/cmExperimental.h index c2df019..26e0d17 100644 --- a/Source/cmExperimental.h +++ b/Source/cmExperimental.h @@ -12,6 +12,8 @@ class cmExperimental public: enum class Feature { + CxxModuleCMakeApi, + Sentinel, }; |