cmake编译opencv时指定cuda版本
之前有网友提问说,基于cmake编译时如果切换cuda版本,比如我同时装了cuda8和cuda9,opencv总是找到cuda9,我想用cuda8怎么办?实际上,手头上要配置的工程是基于opencv3.1.0的,这个版本没有对cuda9.0的支持,与其去改opencv的cmake脚本源码,不如切换一下cuda版本。
查看了FindCUDA.cmake源码知道,调用cmake时指定CUDA_TOOLKIT_ROOT_DIR
即可,例如
set CUDA_TOOLKIT_ROOT_DIR="D:/soft/NVIDIA GPU Computing Toolkit/CUDA/v8.0"
cmake ^
-G "Visual Studio 14 2015 Win64" ^
-D CMAKE_BUILD_TYPE=Release ^
-D CMAKE_INSTALL_PREFIX=%cd%/install ^
-D WITH_CUDA=ON ^
-D CUDA_TOOLKIT_ROOT_DIR=%CUDA_TOOLKIT_ROOT_DIR% ^
-D WITH_VTK=OFF ^
-D WITH_MATLAB=OFF ^
-D BUILD_DOCS=ON ^
-D OPENCV_EXTRA_MODULES_PATH=D:/lib/opencv_contrib_310/modules ^
../sources
cd ..
顺带吐槽一下FindCUDA.cmake的注释,写的误导人:一上来说要指定CUDA_BIN_PATH
来切换cuda版本,但是试了下并没卵用,还是找到9.0而不是8.0。仔细看了后面find_path
等相关源码才发现是要指定CUDA_TOOLKIT_ROOT_DIR
。
Greatness is never a given, it must be earned.