mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
CUDA: Generalize CMAKE_{CUDA => <LANG>}_HOST_COMPILER variable docs
This commit is contained in:
@@ -8,8 +8,10 @@ CUDAHOSTCXX
|
||||
Preferred executable for compiling host code when compiling ``CUDA``
|
||||
language files. Will only be used by CMake on the first configuration to
|
||||
determine ``CUDA`` host compiler, after which the value for ``CUDAHOSTCXX`` is
|
||||
stored in the cache as :variable:`CMAKE_CUDA_HOST_COMPILER`. This environment
|
||||
variable is preferred over :variable:`CMAKE_CUDA_HOST_COMPILER`.
|
||||
stored in the cache as
|
||||
:variable:`CMAKE_CUDA_HOST_COMPILER <CMAKE_<LANG>_HOST_COMPILER>`.
|
||||
This environment variable is preferred over
|
||||
:variable:`CMAKE_CUDA_HOST_COMPILER <CMAKE_<LANG>_HOST_COMPILER>`.
|
||||
|
||||
This environment variable is primarily meant for use with projects that
|
||||
enable ``CUDA`` as a first-class language.
|
||||
|
||||
@@ -628,6 +628,7 @@ Variables for Languages
|
||||
/variable/CMAKE_LANG_FLAGS_RELEASE_INIT
|
||||
/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO
|
||||
/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT
|
||||
/variable/CMAKE_LANG_HOST_COMPILER
|
||||
/variable/CMAKE_LANG_IGNORE_EXTENSIONS
|
||||
/variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES
|
||||
/variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES
|
||||
|
||||
@@ -3,34 +3,6 @@ CMAKE_CUDA_HOST_COMPILER
|
||||
|
||||
.. versionadded:: 3.10
|
||||
|
||||
When :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is
|
||||
``NVIDIA``, ``CMAKE_CUDA_HOST_COMPILER`` selects the compiler executable to use
|
||||
when compiling host code for ``CUDA`` language files.
|
||||
This maps to the ``nvcc -ccbin`` option.
|
||||
|
||||
The ``CMAKE_CUDA_HOST_COMPILER`` variable may be set explicitly before CUDA is
|
||||
first enabled by a :command:`project` or :command:`enable_language` command.
|
||||
This can be done via ``-DCMAKE_CUDA_HOST_COMPILER=...`` on the command line
|
||||
or in a :ref:`toolchain file <Cross Compiling Toolchain>`. Or, one may set
|
||||
the :envvar:`CUDAHOSTCXX` environment variable to provide a default value.
|
||||
|
||||
Once the CUDA language is enabled, the ``CMAKE_CUDA_HOST_COMPILER`` variable
|
||||
is read-only and changes to it are undefined behavior.
|
||||
|
||||
.. note::
|
||||
|
||||
Since ``CMAKE_CUDA_HOST_COMPILER`` is meaningful only when the
|
||||
:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``,
|
||||
it does not make sense to set ``CMAKE_CUDA_HOST_COMPILER`` without also
|
||||
setting ``CMAKE_CUDA_COMPILER`` to NVCC.
|
||||
|
||||
.. note::
|
||||
|
||||
Projects should not try to set ``CMAKE_CUDA_HOST_COMPILER`` to match
|
||||
:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>` themselves.
|
||||
It is the end-user's responsibility, not the project's, to ensure that
|
||||
the C++ and CUDA compilers target the same ABI.
|
||||
|
||||
.. note::
|
||||
|
||||
Ignored when using :ref:`Visual Studio Generators`.
|
||||
This is the original CUDA-specific name for the more general
|
||||
:variable:`CMAKE_<LANG>_HOST_COMPILER` variable. See the latter
|
||||
for details.
|
||||
|
||||
41
Help/variable/CMAKE_LANG_HOST_COMPILER.rst
Normal file
41
Help/variable/CMAKE_LANG_HOST_COMPILER.rst
Normal file
@@ -0,0 +1,41 @@
|
||||
CMAKE_<LANG>_HOST_COMPILER
|
||||
--------------------------
|
||||
|
||||
.. versionadded:: 3.10
|
||||
``CMAKE_CUDA_HOST_COMPILER``
|
||||
|
||||
This variable is available when ``<LANG>`` is ``CUDA``.
|
||||
|
||||
When :variable:`CMAKE_<LANG>_COMPILER_ID` is
|
||||
``NVIDIA``, ``CMAKE_<LANG>_HOST_COMPILER`` selects the compiler executable
|
||||
to use when compiling host code for ``CUDA`` language files.
|
||||
This maps to the ``nvcc -ccbin`` option.
|
||||
|
||||
The ``CMAKE_<LANG>_HOST_COMPILER`` variable may be set explicitly before CUDA
|
||||
is first enabled by a :command:`project` or :command:`enable_language`
|
||||
command.
|
||||
This can be done via ``-DCMAKE_<LANG>_HOST_COMPILER=...`` on the command line
|
||||
or in a :ref:`toolchain file <Cross Compiling Toolchain>`. Or, one may set
|
||||
the :envvar:`CUDAHOSTCXX` environment variable to
|
||||
provide a default value.
|
||||
|
||||
Once the CUDA language is enabled, the ``CMAKE_<LANG>_HOST_COMPILER``
|
||||
variable is read-only and changes to it are undefined behavior.
|
||||
|
||||
.. note::
|
||||
|
||||
Since ``CMAKE_<LANG>_HOST_COMPILER`` is meaningful only when the
|
||||
:variable:`CMAKE_<LANG>_COMPILER_ID` is ``NVIDIA``,
|
||||
it does not make sense to set ``CMAKE_<LANG>_HOST_COMPILER`` without also
|
||||
setting ``CMAKE_<LANG>_COMPILER`` to NVCC.
|
||||
|
||||
.. note::
|
||||
|
||||
Projects should not try to set ``CMAKE_<LANG>_HOST_COMPILER`` to match
|
||||
:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>` themselves.
|
||||
It is the end-user's responsibility, not the project's, to ensure that
|
||||
NVCC targets the same ABI as the C++ compiler.
|
||||
|
||||
.. note::
|
||||
|
||||
Ignored when using :ref:`Visual Studio Generators`.
|
||||
@@ -25,7 +25,7 @@ or :command:`project` commands:
|
||||
If this variable is already set, either explicitly or cached by
|
||||
a previous call, the check is skipped.
|
||||
|
||||
:variable:`CMAKE_CUDA_HOST_COMPILER`
|
||||
:variable:`CMAKE_<LANG>_HOST_COMPILER`
|
||||
This variable is set when ``<lang>`` is ``CUDA``.
|
||||
|
||||
If the check detects an explicit host compiler that is required for
|
||||
@@ -34,12 +34,12 @@ or :command:`project` commands:
|
||||
this variable will be cleared.
|
||||
|
||||
If this variable is already set, its value is preserved only if
|
||||
:variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` is also set.
|
||||
:variable:`CMAKE_<LANG>_COMPILER` is also set.
|
||||
Otherwise, the check runs and overwrites
|
||||
:variable:`CMAKE_CUDA_HOST_COMPILER` with a new result.
|
||||
Note that :variable:`CMAKE_CUDA_HOST_COMPILER` documents it should
|
||||
:variable:`CMAKE_<LANG>_HOST_COMPILER` with a new result.
|
||||
Note that :variable:`CMAKE_<LANG>_HOST_COMPILER` documents it should
|
||||
not be set without also setting
|
||||
:variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` to a NVCC compiler.
|
||||
:variable:`CMAKE_<LANG>_COMPILER` to a NVCC compiler.
|
||||
|
||||
For example:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user