New in version 3.10: CMAKE_CUDA_HOST_COMPILER

New in version 3.28: CMAKE_HIP_HOST_COMPILER

This variable is available when <LANG> is CUDA or HIP.

When 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 project() or enable_language() command. This can be done via -DCMAKE_<LANG>_HOST_COMPILER=... on the command line or in a toolchain file. Or, one may set the CUDAHOSTCXX or 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.


Since CMAKE_<LANG>_HOST_COMPILER is meaningful only when the 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.


Projects should not try to set CMAKE_<LANG>_HOST_COMPILER to match CMAKE_CXX_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.


Ignored when using Visual Studio Generators.