CMP0104 | |
------- | |
.. versionadded:: 3.18 | |
Initialize :variable:`CMAKE_CUDA_ARCHITECTURES` when | |
:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``. | |
Raise an error if :prop_tgt:`CUDA_ARCHITECTURES` is empty. | |
:variable:`CMAKE_CUDA_ARCHITECTURES` introduced in CMake 3.18 is used to | |
initialize :prop_tgt:`CUDA_ARCHITECTURES`, which passes correct code generation | |
flags to the CUDA compiler. | |
Previous to this users had to manually specify the code generation flags. This | |
policy is for backwards compatibility with manually specifying code generation | |
flags. | |
The ``OLD`` behavior for this policy is to not initialize | |
:variable:`CMAKE_CUDA_ARCHITECTURES` when | |
:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``. | |
Empty :prop_tgt:`CUDA_ARCHITECTURES` is allowed. | |
The ``NEW`` behavior of this policy is to initialize | |
:variable:`CMAKE_CUDA_ARCHITECTURES` when | |
:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA`` | |
and raise an error if :prop_tgt:`CUDA_ARCHITECTURES` is empty during generation. | |
If :prop_tgt:`CUDA_ARCHITECTURES` is set to a false value no architectures | |
flags are passed to the compiler. This is intended to support packagers and | |
the rare cases where full control over the passed flags is required. | |
This policy was introduced in CMake version 3.18. CMake version | |
|release| warns when the policy is not set and uses ``OLD`` behavior. | |
Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` | |
explicitly. | |
.. include:: DEPRECATED.txt | |
Examples | |
^^^^^^^^ | |
.. code-block:: cmake | |
set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72") | |
Generates code for real and virtual architectures ``30``, ``50`` and ``72``. | |
.. code-block:: cmake | |
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual) | |
Generates code for real architecture ``70`` and virtual architecture ``72``. | |
.. code-block:: cmake | |
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF) | |
CMake will not pass any architecture flags to the compiler. |