我正在使用 CMake 3.26 来配置使用 CUDA 的项目。它的
CMakeLists.txt
是:
cmake_minimum_required(VERSION 3.25)
project(foo CUDA)
我通过调用将其定向到特定的 CUDA 版本
cmake -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.2/bin/nvcc
我得到:
CMake Error at /path/to/share/cmake-3.26/Modules/CMakeDetermineCUDACompiler.cmake:277 (message):
CMAKE_CUDA_ARCHITECTURES must be non-empty if set.
Call Stack (most recent call first):
CMakeLists.txt:2 (project)
为什么会发生这种情况以及如何解决?
要查看实际发生的情况,请尝试“任意”设置
CMAKE_CUDA_ARCHITECTURES
,如下所示:
cmake_minimum_required(VERSION 3.25)
set(CMAKE_CUDA_ARCHITECTURES "native")
project(foo CUDA)
现在,您将收到不同的错误消息:
CMake Error at CMakeLists.txt:3 (project):
The CMAKE_CUDA_COMPILER:
/usr/local/cuda-12.2/bin/nvcc
is not a full path to an existing compiler tool.
这就是实际的问题。不幸的是,它没有被检测到并被报告,你得到的是关于 CMake 如何无法使用其自动检测逻辑填充其
CMAKE_CUDA_ARCHITECTURES
变量的抱怨。
解决方案是:不要将 CMake 定向到不存在的 nvcc...您可能路径错误或忘记安装该版本等。