# CMake Error: CUDA_ARCHITECTURES is empty for target "mytarget". This is not allowed when enabling CUDA language.

- **ID:** `cmake/cuda-architectures-empty-with-cuda-language`
- **Domain:** cmake
- **Category:** config_error
- **Verification:** ai_generated
- **Fix Rate:** 90%

## Root Cause

When project() enables CUDA (e.g., enable_language(CUDA) or project(MyProject LANGUAGES CUDA)), CMake requires setting CUDA_ARCHITECTURES for each target to specify GPU architecture, but it is left empty.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| cmake 3.18 | active | — | — |
| cmake 3.22 | active | — | — |
| cmake 3.26 | active | — | — |

## Workarounds

1. **Set CUDA_ARCHITECTURES on the target: set_property(TARGET mytarget PROPERTY CUDA_ARCHITECTURES "75;80") or set(CMAKE_CUDA_ARCHITECTURES "75;80") globally before add_executable/add_library.** (95% success)
   ```
   Set CUDA_ARCHITECTURES on the target: set_property(TARGET mytarget PROPERTY CUDA_ARCHITECTURES "75;80") or set(CMAKE_CUDA_ARCHITECTURES "75;80") globally before add_executable/add_library.
   ```
2. **If you don't care about specific architectures, set it to native: set(CMAKE_CUDA_ARCHITECTURES "native") in CMakeLists.txt.** (85% success)
   ```
   If you don't care about specific architectures, set it to native: set(CMAKE_CUDA_ARCHITECTURES "native") in CMakeLists.txt.
   ```

## Dead Ends

- **Setting CMAKE_CUDA_ARCHITECTURES to empty string hoping CMake picks a default** — CMake treats empty string the same as unset, still triggering the error. (100% fail)
- **Disabling CUDA language completely by removing it from project()** — This may break compilation if the project uses CUDA source files (.cu), leading to 'unknown file type' errors. (80% fail)
