问题描述
在使用VS2019的cmake构建cuda项目时,遇到了Couldn't find CUDA library root
的错误。但直接创建msbuild的cuda runtime项目则可以成功运行。
系统和版本号
系统:windows 10
visual studio:2019 16.11.26
visual studio附带cmake:3.20
cuda:11.7
尝试方案
- 添加/修改环境变量中关于CUDA的部分【无效】
- 使用
SET
指令设置CMAKE_CUDA_COMPILER_TOOLKIT_ROOT
为CUDA的安装路径【无效】 - 修改
CMakeSetting.json
,加上-DCMAKE_CUDA_COMPILER_TOOLKIT_ROOT
或直接在CMake变量和缓存中添加CMAKE_CUDA_COMPILER_TOOLKIT_ROOT
【无效】
问题解决
在cmake的官方仓库中找到一个issue:Enabling CUDA fails in the presence of certain environment variables,发现了一些问题,但是修复在cmake-3.20.3中完成的,而visual studio无法单独更新cmake的版本。
于是可以在安装最新版的cmake,然后从CMakeSetting.json
的高级设置中将CMake可执行文件设置为自己新安装的高版本cmake,路径为安装路径下的bin/cmake.exe
。
现在生成缓存时就不会报Couldn't find CUDA library root
了。