Compilation CMake找不到更新的CUDA软件包?

Compilation CMake找不到更新的CUDA软件包?,compilation,cmake,cuda,Compilation,Cmake,Cuda,我已经安装了CUDA 7.5版和8.0版,但cmake似乎只能找到7.5版。运行此代码: find_package(CUDA 8.0 REQUIRED) 给出此错误: CMake Error at P:/Program Files/CMake/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find CUDA: Found unsuitable version "7.5

我已经安装了CUDA 7.5版和8.0版,但cmake似乎只能找到7.5版。运行此代码:

find_package(CUDA 8.0 REQUIRED)
给出此错误:

CMake Error at P:/Program Files/CMake/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find CUDA: Found unsuitable version "7.5", but required is at
  least "8.0" (found C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5)

即使v8.0与v7.5位于同一目录中。这是cmake的问题,还是我在这里做错了什么?

您可以通过从cmake命令行设置
CUDA\u TOOLKIT\u ROOT\u DIR
标志,显式地向cmake提供CUDA路径:

cmake-DCUDA\u TOOLKIT\u ROOT\u DIR=

CUDA版本检测由CMake的
findCUDA
功能完成:

可能由于某种原因,
findCUDA
search无法找到您安装的CUDA 8.0。

可能是
CUDA\u BIN\u PATH
设置为7.5,因此CMake会选择该路径。

您可以通过从CMake命令行设置
CUDA\u TOOLKIT\u ROOT\u DIR
标志,显式地向CMake提供CUDA路径:

cmake-DCUDA\u TOOLKIT\u ROOT\u DIR=

CUDA版本检测由CMake的
findCUDA
功能完成:

可能由于某种原因,
findCUDA
search无法找到您安装的CUDA 8.0。
可能是
CUDA_BIN_PATH
设置为7.5,因此CMake会选择该值

  • 无论您安装了多少个CUDA工具包
    find_-package(CUDA)
    都会在环境变量
    $PATH
    中查找具有其
    nvcc
    (通常位于
    /bin
    )的工具包。如果
    $PATH
    中有多个
    nvcc
    ,它将拾取第一个。在windows上,安装程序通常会自动添加相关的环境变量,因此找到的版本取决于安装顺序

  • 您不应该再使用
    find_package(CUDA)
    ,因为CMake现在对CUDA拥有一流的支持

  • 详情请参阅:

    • CMake文档
    • 中标题注释的前几段
  • 无论您安装了多少个CUDA工具包
    find_-package(CUDA)
    都会在环境变量
    $PATH
    中查找具有其
    nvcc
    (通常位于
    /bin
    )的工具包。如果
    $PATH
    中有多个
    nvcc
    ,它将拾取第一个。在windows上,安装程序通常会自动添加相关的环境变量,因此找到的版本取决于安装顺序

  • 您不应该再使用
    find_package(CUDA)
    ,因为CMake现在对CUDA拥有一流的支持

  • 详情请参阅:

    • CMake文档
    • 中标题注释的前几段

    您的意思是我必须使用CMakelists中的“set”命令来设置它吗?我是CMake的新手,但我认为使用它的全部意义在于避免手动设置东西?您可以在CMake的命令行中设置CUDA标志-我编辑了答案以澄清。是的,理想情况下,CMake应该自动为您查找软件包,但在这种情况下,当安装了多个CUDA版本时,CMake的CUDA搜索可能会出现一些问题。似乎,CMake会选择它找到的第一个CUDA版本,然后检查该版本是否与
    CMakeLists.txt
    (而不是继续搜索指定的版本)。你的意思是我必须使用“set”设置它吗CmakeList中的命令?我对CMake是新手,但我认为使用它的全部目的是避免手动设置内容?您可以在CMake的命令行中设置CUDA标志-我编辑了答案以澄清。是的,理想情况下CMake应该为您自动查找包,但在这种情况下,当安装了多个CUDA版本。CMake似乎会选择它找到的第一个CUDA版本,然后检查该版本是否与
    CMakeLists.txt
    中指定的版本匹配(而不是继续搜索指定的版本)。