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.