| CMAKE_<LANG>_HOST_COMPILER |
| -------------------------- |
| |
| .. versionadded:: 3.10 |
| ``CMAKE_CUDA_HOST_COMPILER`` |
| |
| .. versionadded:: 3.28 |
| ``CMAKE_HIP_HOST_COMPILER`` |
| |
| This variable is available when ``<LANG>`` is ``CUDA`` or ``HIP``. |
| |
| When :variable:`CMAKE_<LANG>_COMPILER_ID` is |
| ``NVIDIA``, ``CMAKE_<LANG>_HOST_COMPILER`` selects the compiler executable |
| to use when compiling host code for ``CUDA`` or ``HIP`` language files. |
| This maps to the ``nvcc -ccbin`` option. |
| |
| The ``CMAKE_<LANG>_HOST_COMPILER`` variable may be set explicitly before CUDA |
| or HIP 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` or :envvar:`HIPHOSTCXX` environment variable to |
| provide a default value. |
| |
| Once the CUDA or HIP 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`. |