cmake config_error ai_generated true

CMake Error: CUDA_ARCHITECTURES is empty for target "mytarget"

ID: cmake/cuda-architecture-unknown

Also available as: JSON · Markdown · 中文
80%Fix Rate
85%Confidence
1Evidence
2023-03-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
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 — — —

Root Cause

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

generic

中文

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

Official Documentation

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

Workarounds

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

中文步骤

  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

Dead Ends

Common approaches that don't work:

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

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

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

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

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

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