CMake 3.29 enable_language(CUDA) 未设置“CUDA_FOUND”变量

问题描述 投票:0回答:1

我在使用以下 CMake 配置启用 CUDA 时遇到了问题,它没有按预期工作:

无效的代码:

cmake_minimum_required(VERSION 3.29)

project(demo)

enable_language(CUDA)

if (CUDA_FOUND)
    message(STATUS "CUDA is enabled.")
else ()
    message(FATAL_ERROR "CUDA is not found or enabled.")
endif ()

运行此配置时,消息显示“未找到或未启用 CUDA。”

有效的代码:

cmake_minimum_required(VERSION 3.26)

project(demo)

if (POLICY CMP0146)
    cmake_policy(SET CMP0146 OLD)
endif ()
find_package(CUDA REQUIRED)
if (CUDA_FOUND)
    message(STATUS "CUDA is enabled.")
else ()
    message(FATAL_ERROR "CUDA is not found or enabled.")
endif ()
cmake cuda
1个回答
2
投票

命令

enable_language
未设置
*_FOUND
变量。实际上,没有理由检查
enable_language
调用是否成功:如果此调用失败,CMake 将打印错误消息并立即终止。


如果您想检查语言支持是否存在,那么您可以使用 CheckLanguage 模块。在这种情况下,要检查的变量是

CMAKE_<LANG>_COMPILER
:

# Import the module
include (CheckLanguage)
# Check whether CUDA is supported
check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
  # CUDA language is supported. It is safe to enable it.
  enable_language(CUDA)
else()
  message(FATAL_ERROR "CUDA is not found.")
endif()
© www.soinside.com 2019 - 2024. All rights reserved.