Răsfoiți Sursa

CUDA: Generalize CMAKE_{CUDA => <LANG>}_HOST_COMPILER variable docs

Brad King 2 ani în urmă
părinte
comite
8124950f6c

+ 4 - 2
Help/envvar/CUDAHOSTCXX.rst

@@ -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.

+ 1 - 0
Help/manual/cmake-variables.7.rst

@@ -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 - 31
Help/variable/CMAKE_CUDA_HOST_COMPILER.rst

@@ -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 - 0
Help/variable/CMAKE_LANG_HOST_COMPILER.rst

@@ -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`.

+ 5 - 5
Modules/CheckLanguage.cmake

@@ -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: