cmake
config_error
ai_generated
true
CMake Error: CUDA_ARCHITECTURES is empty for target "mytarget".
ID: cmake/missing-cuda-architectures
93%Fix Rate
90%Confidence
1Evidence
2024-05-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 3.18 | active | — | — | — |
| 3.20 | active | — | — | — |
| 3.22 | active | — | — | — |
| 3.28 | active | — | — | — |
Root Cause
CMake 3.18+ requires explicit CUDA architecture specification for targets using CUDA; if not set, it defaults to empty, causing build failure.
generic中文
CMake 3.18+ 要求为使用 CUDA 的目标显式指定 CUDA 架构;如果未设置,则默认为空,导致构建失败。
Official Documentation
https://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.htmlWorkarounds
-
95% success Set a valid CUDA architecture, e.g., `set_target_properties(mytarget PROPERTIES CUDA_ARCHITECTURES "75")` for Turing GPUs.
Set a valid CUDA architecture, e.g., `set_target_properties(mytarget PROPERTIES CUDA_ARCHITECTURES "75")` for Turing GPUs.
-
90% success Set global architecture: `set(CMAKE_CUDA_ARCHITECTURES "75;86")` before defining targets.
Set global architecture: `set(CMAKE_CUDA_ARCHITECTURES "75;86")` before defining targets.
中文步骤
设置有效的 CUDA 架构,例如 `set_target_properties(mytarget PROPERTIES CUDA_ARCHITECTURES "75")` 用于 Turing GPU。
设置全局架构:在定义目标之前 `set(CMAKE_CUDA_ARCHITECTURES "75;86")`。
Dead Ends
Common approaches that don't work:
-
Set CMAKE_CUDA_ARCHITECTURES to empty string to bypass the check.
90% fail
CMake policy CMP0104 enforces non-empty architectures; empty string still triggers the error.
-
Add `set(CMAKE_CUDA_ARCHITECTURES OFF)` to CMakeLists.txt.
80% fail
OFF is not a valid architecture; CMake interprets it as empty and fails.