You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

指定CUDAToolkit_INCLUDE_DIR等变量无效,CMake无法找到CUDA组件

解决CMake查找CUDAToolkit失败的问题

问题重现

我的CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.17)
project(ProjectName)
find_package(CUDAToolkit)

执行cmake ..时出现报错:

$ cmake .. 
-- Unable to find cuda_runtime.h in "/usr/share/cuda/include" for CUDAToolkit_INCLUDE_DIR.
-- Unable to find cudart library.
-- Could NOT find CUDAToolkit (missing: CUDA_CUDART) (found version "12.2.91")
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/Geremia/Downloads

手动指定包含cuda_runtime.h的正确目录/usr/share/cuda/targets/x86_64-linux/include后,CMake仍未搜索该目录,报错相同:

$ cmake .. -DCUDAToolkit_INCLUDE_DIR=/usr/share/cuda/targets/x86_64-linux/include
-- Unable to find cuda_runtime.h in "/usr/share/cuda/include" for CUDAToolkit_INCLUDE_DIR.
-- Unable to find cudart library.
-- Could NOT find CUDAToolkit (missing: CUDA_CUDART) (found version "12.2.91")
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/Geremia/Downloads

指定CUDAToolkit_ROOT变量也无效果。

解决方案

  • 创建标准路径软链接:CUDA默认依赖/usr/local/cuda作为标准查找路径,若你的CUDA安装在/usr/share/cuda,手动创建软链接:

    sudo ln -s /usr/share/cuda /usr/local/cuda
    

    之后重新运行CMake即可。

  • 同时指定头文件与库文件路径:单独指定CUDAToolkit_INCLUDE_DIR可能无效,需同时指定库目录(假设cudart库在/usr/share/cuda/targets/x86_64-linux/lib):

    cmake .. -DCUDAToolkit_INCLUDE_DIR=/usr/share/cuda/targets/x86_64-linux/include -DCUDAToolkit_LIBRARY_DIR=/usr/share/cuda/targets/x86_64-linux/lib
    
  • 直接指定cudart库路径:跳过目录查找,直接给CMake指定库文件位置:

    cmake .. -DCUDA_CUDART_LIBRARY=/usr/share/cuda/targets/x86_64-linux/lib/libcudart.so
    
  • 升级CMake版本:CMake 3.17对CUDA 12.x的支持不完善,升级到3.20及以上版本,新版优化了CUDAToolkit的查找逻辑,适配非标准安装路径。

  • 在CMakeLists.txt中硬编码路径:避免每次执行cmake传参,修改配置文件:

    cmake_minimum_required(VERSION 3.17)
    project(ProjectName)
    set(CUDAToolkit_INCLUDE_DIR "/usr/share/cuda/targets/x86_64-linux/include")
    set(CUDAToolkit_LIBRARY_DIR "/usr/share/cuda/targets/x86_64-linux/lib")
    find_package(CUDAToolkit REQUIRED)
    

内容的提问来源于stack exchange,提问作者Geremia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:55:55