mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
Help: Document CMAKE_CUDA_HOST_COMPILER as specific to NVIDIA nvcc
Explain the purpose of this variable and the conditions under which it can be set. Point out that it should not be set explicitly without also setting `CMAKE_CUDA_COMPILER` explicitly. Issue: #20826
This commit is contained in:
@@ -3,8 +3,23 @@ CMAKE_CUDA_HOST_COMPILER
|
||||
|
||||
.. versionadded:: 3.10
|
||||
|
||||
Executable to use when compiling host code when compiling ``CUDA`` language
|
||||
files. Maps to the ``nvcc -ccbin`` option. Will only be used by CMake on the first
|
||||
configuration to determine a valid host compiler for ``CUDA``. After a valid
|
||||
host compiler has been found, this value is read-only. This variable takes
|
||||
priority over the :envvar:`CUDAHOSTCXX` environment variable.
|
||||
When :variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` is set to
|
||||
NVIDIA ``nvcc``, ``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
|
||||
``CMAKE_CUDA_COMPILER`` is ``nvcc``, it does not make sense to
|
||||
set ``CMAKE_CUDA_HOST_COMPILER`` explicitly without also setting
|
||||
``CMAKE_CUDA_COMPILER`` explicitly to be sure it is ``nvcc``.
|
||||
|
||||
@@ -20,7 +20,7 @@ test project. The result is cached in :variable:`CMAKE_<LANG>_COMPILER`
|
||||
as the compiler that was found, or ``NOTFOUND`` if the language cannot be
|
||||
enabled. For CUDA which can have an explicit host compiler, the cache
|
||||
:variable:`CMAKE_CUDA_HOST_COMPILER` variable will be set if it was required
|
||||
for compilation.
|
||||
for compilation (and cleared if it was not).
|
||||
|
||||
Example:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user