mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-15 03:48:02 +08:00
CXXModules: add a variable for BMI-only compilation
This will be required when dealing with imported targets which contain modules.
This commit is contained in:
@@ -17,3 +17,4 @@ string(CONCAT CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG
|
|||||||
" -fdeps-format=p1689r5"
|
" -fdeps-format=p1689r5"
|
||||||
# Force C++ as a language.
|
# Force C++ as a language.
|
||||||
" -x c++")
|
" -x c++")
|
||||||
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG "-fmodule-only")
|
||||||
|
@@ -99,6 +99,10 @@ dependencies to the file specified by the ``<DYNDEP_FILE>`` placeholder. The
|
|||||||
``CMAKE_EXPERIMENTAL_CXX_SCANDEP_DEPFILE_FORMAT`` file may be set to ``msvc``
|
``CMAKE_EXPERIMENTAL_CXX_SCANDEP_DEPFILE_FORMAT`` file may be set to ``msvc``
|
||||||
for scandep rules which use ``msvc``-style dependency reporting.
|
for scandep rules which use ``msvc``-style dependency reporting.
|
||||||
|
|
||||||
|
In order to support ``IMPORTED`` targets with associated C++20 module sources,
|
||||||
|
the ``CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG`` variable must be provided
|
||||||
|
to have the compiler only output a BMI instead of a BMI and an object file.
|
||||||
|
|
||||||
The module dependencies should be written in the format described
|
The module dependencies should be written in the format described
|
||||||
by the `P1689r5`_ paper.
|
by the `P1689r5`_ paper.
|
||||||
|
|
||||||
@@ -113,6 +117,8 @@ For compilers that generate module maps, tell CMake as follows:
|
|||||||
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc")
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc")
|
||||||
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG
|
||||||
"${compiler_flags_for_module_map} -fmodule-mapper=<MODULE_MAP_FILE>")
|
"${compiler_flags_for_module_map} -fmodule-mapper=<MODULE_MAP_FILE>")
|
||||||
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG
|
||||||
|
"-fmodule-only")
|
||||||
|
|
||||||
Currently, the only supported formats are, ``clang``, ``gcc``, and ``msvc``.
|
Currently, the only supported formats are, ``clang``, ``gcc``, and ``msvc``.
|
||||||
The ``gcc`` format is described in the GCC documentation, but the relevant
|
The ``gcc`` format is described in the GCC documentation, but the relevant
|
||||||
|
@@ -43,5 +43,6 @@ if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
|
|||||||
" > <DYNDEP_FILE>")
|
" > <DYNDEP_FILE>")
|
||||||
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "clang")
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "clang")
|
||||||
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>")
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>")
|
||||||
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG "--precompile")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@@ -87,4 +87,5 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "19.34")
|
|||||||
set(CMAKE_EXPERIMENTAL_CXX_SCANDEP_DEPFILE_FORMAT "msvc")
|
set(CMAKE_EXPERIMENTAL_CXX_SCANDEP_DEPFILE_FORMAT "msvc")
|
||||||
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "msvc")
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "msvc")
|
||||||
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>")
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>")
|
||||||
|
set(CMAKE_EXPERIMENTAL_CXX_MODULE_BMI_ONLY_FLAG "-ifcOnly;-ifcOutput;<OBJECT>")
|
||||||
endif ()
|
endif ()
|
||||||
|
Reference in New Issue
Block a user