我在使用以下 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 ()
命令
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()