cmake config_error ai_generated true

CMake错误:目标"mytarget"的CUDA_ARCHITECTURES为空

CMake Error: CUDA_ARCHITECTURES is empty for target "mytarget"

ID: cmake/cuda-architecture-unknown

其他格式: JSON · Markdown 中文 · English
80%修复率
85%置信度
1证据数
2023-03-15首次发现

版本兼容性

版本状态引入弃用备注
CMake 3.18 active
CMake 3.19 active
CMake 3.20 active
CMake 3.21 active
CMake 3.22 active
CMake 3.23 active
CMake 3.24 active
CMake 3.25 active
CMake 3.26 active
CMake 3.27 active
CMake 3.28 active
CMake 3.29 active
CMake 3.30 active
CUDA 11.0 active
CUDA 11.8 active
CUDA 12.0 active

根因分析

CMake 3.18及以上版本要求显式指定CUDA架构;当CMAKE_CUDA_ARCHITECTURES未设置或设置为空时,编译失败。

English

CMake 3.18+ requires explicit CUDA architectures; when CMAKE_CUDA_ARCHITECTURES is not set or set to empty, compilation fails.

generic

官方文档

https://cmake.org/cmake/help/latest/policy/CMP0104.html

解决方案

  1. Set CMAKE_CUDA_ARCHITECTURES globally before project() call: set(CMAKE_CUDA_ARCHITECTURES "75;80")
  2. Use target property: set_property(TARGET mytarget PROPERTY CUDA_ARCHITECTURES "75;80")
  3. Set environment variable: export CMAKE_CUDA_ARCHITECTURES=75;80 before running cmake

无效尝试

常见但无效的做法:

  1. Setting CMAKE_CUDA_ARCHITECTURES to empty string in CMakeLists.txt 95% 失败

    CMake interprets empty string as no architectures specified, triggering the same error.

  2. Removing all CUDA-related lines from CMakeLists.txt 80% 失败

    Without any architecture, CMake defaults to empty, causing the error.

  3. Setting CMAKE_CUDA_ARCHITECTURES to 'all' on older CUDA versions 60% 失败

    'all' may include unsupported architectures, leading to compilation failures.