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

其他格式: JSON · Markdown 中文 · English
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.

generic

官方文档

https://cmake.org/cmake/help/latest/prop_tgt/CUDA_ARCHITECTURES.html

解决方案

  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")。

无效尝试

常见但无效的做法:

  1. 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.

  2. 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.