# CUDA_ARCHITECTURES

Added in version 3.18.

List of architectures to generate device code for.

An architecture can be suffixed by either `-real` or `-virtual` to specify the kind of architecture to generate code for. If no suffix is given then code is generated for both real and virtual architectures.

A non-empty false value (e.g. `OFF`) disables adding architectures. This is intended to support packagers and rare cases where full control over the passed flags is required.

This property is initialized by the value of the `CMAKE_CUDA_ARCHITECTURES` variable if it is set when a target is created.

The `CUDA_ARCHITECTURES` target property must be set to a non-empty value on targets that compile CUDA sources, or it is an error. See policy `CMP0104`.

The `CUDA_ARCHITECTURES` may be set to one of the following special values:

`all`

  Added in version 3.23.

  Compile for all supported major and minor real architectures, and the highest major virtual architecture.

`all-major`

  Added in version 3.23.

  Compile for all supported major real architectures, and the highest major virtual architecture.

`native`

  Added in version 3.24.

  Compile for the architecture(s) of the host's GPU(s).

## Examples

    set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72")

Generates code for real and virtual architectures `30`, `50` and `72`.

    set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)

Generates code for real architecture `70` and virtual architecture `72`.

    set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)

CMake will not pass any architecture flags to the compiler.