使用CMake编译AlexeyAB/darknet失败:无法检测到CUDA
CMake无法检测到CUDA(Windows环境下)
环境信息
- 操作系统:Windows 10
- CUDA:11.8
- cuDNN:11.8
- CMake:3.30
- Visual Studio:2022
- Darknet:AlexeyAB版本
问题描述
执行nvcc --version可正常获取CUDA版本信息,但CMake始终无法检测到CUDA。检查项目CMakeLists.txt第118行,未发现CMAKE_CUDA_COMPILER变量定义。已尝试手动添加该环境变量、重装所有相关软件,问题仍未解决。
排查与修复步骤
1. 手动指定CUDA编译器路径
CMake配置时显式指定nvcc路径,避免自动检测失败:
- 命令行配置:
cmake -G "Visual Studio 17 2022" -DCMAKE_CUDA_COMPILER="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/bin/nvcc.exe" .. - CMake GUI配置:
打开CMake GUI,点击「Add Entry」,添加变量CMAKE_CUDA_COMPILER,类型选择PATH,值设为nvcc.exe的完整安装路径,再点击Configure重新检测。
2. 验证VS与CUDA兼容性
确保Visual Studio 2022已安装**Desktop development with C++**工作负载,以及对应版本的Windows SDK。CUDA 11.8原生支持VS2022,若VS组件不全,会导致CMake无法关联CUDA编译器。
3. 检查环境变量配置
- 确认系统环境变量
PATH中包含CUDA的bin目录(C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/bin),且该路径在其他可能冲突的路径之前。 - 检查
CUDA_PATH环境变量是否正确设置为C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8。
4. 修改CMakeLists.txt强制指定CUDA
在CMakeLists.txt的第118行之前添加以下代码,显式声明CUDA编译器:
set(CMAKE_CUDA_COMPILER "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/bin/nvcc.exe") enable_language(CUDA)
注意根据实际安装目录调整路径。
5. 清理CMake缓存后重试
删除项目目录下的CMakeCache.txt文件和build文件夹,重新运行CMake配置,避免旧缓存干扰检测逻辑。
内容的提问来源于stack exchange,提问作者Howard Tsao
相关产品推荐
相关产品推荐

