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

posted @ 2019-04-14 11:44  ChrisZZ  阅读(4421)  评论(0编辑  收藏  举报