cmake
config_error
ai_generated
true
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
90%Fix Rate
90%Confidence
1Evidence
2023-06-05First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| cmake 3.18 | active | — | — | — |
| cmake 3.22 | active | — | — | — |
| cmake 3.26 | active | — | — | — |
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.
generic中文
当 project() 启用 CUDA(例如 enable_language(CUDA) 或 project(MyProject LANGUAGES CUDA))时,CMake 要求为每个目标设置 CUDA_ARCHITECTURES 来指定 GPU 架构,但该值为空。
Official Documentation
https://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.htmlWorkarounds
-
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.
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.
-
85% success If you don't care about specific architectures, set it to native: set(CMAKE_CUDA_ARCHITECTURES "native") in CMakeLists.txt.
If you don't care about specific architectures, set it to native: set(CMAKE_CUDA_ARCHITECTURES "native") in CMakeLists.txt.
中文步骤
在目标上设置 CUDA_ARCHITECTURES:set_property(TARGET mytarget PROPERTY CUDA_ARCHITECTURES "75;80"),或者在 add_executable/add_library 之前全局设置 set(CMAKE_CUDA_ARCHITECTURES "75;80")。
如果不在意特定架构,设置为 native:在 CMakeLists.txt 中 set(CMAKE_CUDA_ARCHITECTURES "native")。
Dead Ends
Common approaches that don't work:
-
Setting CMAKE_CUDA_ARCHITECTURES to empty string hoping CMake picks a default
100% fail
CMake treats empty string the same as unset, still triggering the error.
-
Disabling CUDA language completely by removing it from project()
80% fail
This may break compilation if the project uses CUDA source files (.cu), leading to 'unknown file type' errors.