cmake
config_error
ai_generated
true
CMake 错误:目标“mytarget”的 CUDA_ARCHITECTURES 为空。启用 CUDA 语言时不允许这样做。
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%修复率
90%置信度
1证据数
2023-06-05首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| cmake 3.18 | active | — | — | — |
| cmake 3.22 | active | — | — | — |
| cmake 3.26 | active | — | — | — |
根因分析
当 project() 启用 CUDA(例如 enable_language(CUDA) 或 project(MyProject LANGUAGES CUDA))时,CMake 要求为每个目标设置 CUDA_ARCHITECTURES 来指定 GPU 架构,但该值为空。
English
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.
官方文档
https://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.html解决方案
-
在目标上设置 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")。
无效尝试
常见但无效的做法:
-
Setting CMAKE_CUDA_ARCHITECTURES to empty string hoping CMake picks a default
100% 失败
CMake treats empty string the same as unset, still triggering the error.
-
Disabling CUDA language completely by removing it from project()
80% 失败
This may break compilation if the project uses CUDA source files (.cu), leading to 'unknown file type' errors.