之前有網友提問說,基於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。
