ubuntu上 cmake时发现cuda的版本不匹配

文章目录

    • 一、问题
    • 二、解决办法
    • 三、原理

一、问题

重装了一次系统,但是原来的一些软件可能没有卸载干净,比如以前安装的是cuda8.0+opencv3.4.1,新装的是cuda9.0+opencv3.4.1,这里不介绍opencv3.4.1,只讲cmake遇到的一些问题

cmake链接opencv时,在这一步遇到Could NOT find CUDA: Found unsuitable version “8.0”, but required is exact version “9.0” (found /usr/local/cuda)

find_package(OpenCV REQUIRED)

应该是系统还是认为是cuda8.0,但其实我已经装的是9.0的版本, 在终端 nvcc-V的时候也是9.0版本,而且我移除了所有8.0的文件夹,但还是cmake发现不了 cuda-9.0.

opencv重装,环境变量设置等等等等但仍然解决不了.

二、解决办法

以下查阅资料所得:
博主解决办法:
先cd到当前文件夹

mkdir build
# cmake .. 一般会这样,但没有这样
cmake -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-9.0 .. #ok编译成功,需要指定一下cuda路径

三、原理

原理转自 http://www.it1352.com/344521.html:

cmake的提到 CUDA_TOOLKIT_ROOT_DIR 作为CMake的变量,而不是环境之一。这就是为什么当你把它变成的.bashrc不工作。如果你看看FindCUDA.cmake它清楚地说:
该脚本会提示用户指定CUDA_TOOLKIT_ROOT_DIR如果preFIX
不能NVCC的位置,在系统路径和要求的确定
被指定到find_package()。要使用的不同的安装版本
工具箱设置环境变量CUDA_BIN_PATH运行cmake的前
(例如CUDA_BIN_PATH =的/ usr /本地/ cuda1.0而不是默认的/ usr /本地/ CUDA)
或配置之后设置CUDA_TOOLKIT_ROOT_DIR。如果更改的值
CUDA_TOOLKIT_ROOT_DIR,依赖路径上的各种组件将
搬迁。

所以把 CUDA_BIN_PATH 到.bashrc或者指定 CUDA_TOOLKIT_ROOT_DIR 来cmake的:
http://www.it1352.com/344521.html

你可能感兴趣的:(CMake&&Make)