# CMake 错误：目标“mytarget”的 CUDA_ARCHITECTURES 为空。启用 CUDA 语言时不允许这样做。

- **ID:** `cmake/cuda-architectures-empty-with-cuda-language`
- **领域:** cmake
- **类别:** config_error
- **验证级别:** ai_generated
- **修复率:** 90%

## 根因

当 project() 启用 CUDA（例如 enable_language(CUDA) 或 project(MyProject LANGUAGES CUDA)）时，CMake 要求为每个目标设置 CUDA_ARCHITECTURES 来指定 GPU 架构，但该值为空。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| cmake 3.18 | active | — | — |
| cmake 3.22 | active | — | — |
| cmake 3.26 | active | — | — |

## 解决方案

1. ```
   在目标上设置 CUDA_ARCHITECTURES：set_property(TARGET mytarget PROPERTY CUDA_ARCHITECTURES "75;80")，或者在 add_executable/add_library 之前全局设置 set(CMAKE_CUDA_ARCHITECTURES "75;80")。
   ```
2. ```
   如果不在意特定架构，设置为 native：在 CMakeLists.txt 中 set(CMAKE_CUDA_ARCHITECTURES "native")。
   ```

## 无效尝试

- **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% 失败率)
- **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% 失败率)
