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

OpenCV/CUDA项目CMake报错:缺失CUDAConfig.cmake

问题:CMake无法找到CUDAConfig.cmake

多次安装、卸载CUDA后,/usr/local/cuda/bin目录缺少CUDA 12.2应有的卸载脚本,且尝试多数论坛方法后,仍无法解决CMake配置问题,相关信息如下:

平台信息

  • HP Omen 15
  • Linux Ubuntu 22.04
  • GeForce RTX 2070
  • NVIDIA-SMI 535.54.03 - Driver Version: 535.54.03
  • CUDA Version: 12.2

CMakeLists.txt内容

cmake_minimum_required(VERSION 3.27)
project(synchronisation_buffer)

# Set C++ Standards
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# FIND LIBRARIES
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

find_package(CUDA REQUIRED)
message(STATUS "    libraries: ${CUDA_LIBS}")

# INCLUDE HEADERS
include_directories(${OpenCV_INCLUDE_DIRS})
# Target the only executable
add_executable(${PROJECT_NAME}
    src/main.cpp 
    src/main.hpp 
    src/buffer.hpp 
)

.bashrc配置内容

# CUDA Bash links
# export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}$ 
# export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/lib
export CPLUS_INCLUDE_PATH=/usr/local/cuda/include

/usr/local目录内容

XXXX@XXXX-OMEN-Laptop-15-ek0xxx:/usr/local$ ls
bin cuda cuda-12 cuda-12.2 doc etc games include lib man sbin share src

/usr/local/cuda/bin目录内容

XXXX@XXXX-OMEN-Laptop-15-ek0xxx:/usr/local/cuda/bin$ ls
bin2c cudafe++ cuobjdump nsight_ee_plugins_manage.sh nsys-ui nvdisasm nvvp
computeprof cuda-gdb fatbinary nsight-sys nvcc nvlink ptxas
compute-sanitizer cuda-gdbserver ncu nsys __nvcc_device_query nvprof
crt cu++filt ncu-ui nsys-exporter nvcc.profile nvprune

报错信息

-- The C compiler identification is GNU 11.3.0
-- The CXX compiler identification is GNU 11.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at /usr/local/lib/cmake/opencv4/OpenCVConfig.cmake:86 (find_package):
  By not providing "FindCUDA.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "CUDA", but
  CMake did not find one.

  Could not find a package configuration file provided by "CUDA" (requested
  version 12.2) with any of the following names:

    CUDAConfig.cmake
    cuda-config.cmake

  Add the installation prefix of "CUDA" to CMAKE_PREFIX_PATH or set
  "CUDA_DIR" to a directory containing one of the above files.  If "CUDA"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  /usr/local/lib/cmake/opencv4/OpenCVConfig.cmake:108 (find_host_package)
  CMakeLists.txt:11 (find_package)


-- Configuring incomplete, errors occurred!
make: *** No targets specified and no makefile found.  Stop.

解决方案

1. 检查CUDA安装完整性

首先确认CUDA 12.2的CMake配置文件是否存在:

ls /usr/local/cuda-12.2/lib64/cmake/CUDA/CUDAConfig.cmake

如果文件不存在,说明CUDA Toolkit安装不完整,需要重新下载CUDA 12.2 runfile安装包,运行时勾选"CUDA Toolkit"选项(不要只安装驱动),确保完整安装。

2. 替换CMake中的CUDA查找方式

CMake 3.10+已弃用旧的find_package(CUDA)模块,推荐使用CUDAToolkit组件,修改CMakeLists.txt:

# 替换原有的find_package(CUDA REQUIRED)
find_package(CUDAToolkit REQUIRED)
message(STATUS "    CUDA libraries: ${CUDAToolkit_LIBRARIES}")
message(STATUS "    CUDA include path: ${CUDAToolkit_INCLUDE_DIRS}")

# 同时需要将CUDA库链接到目标
target_link_libraries(${PROJECT_NAME} PRIVATE ${CUDAToolkit_LIBRARIES})

3. 手动指定CUDA_DIR路径

如果确认CUDAConfig.cmake存在,可在CMake命令行中手动指定路径:

cmake .. -DCUDA_DIR=/usr/local/cuda-12.2/lib64/cmake/CUDA

或者在CMakeLists.txt开头添加:

set(CUDA_DIR "/usr/local/cuda-12.2/lib64/cmake/CUDA" CACHE PATH "Path to CUDAConfig.cmake directory")

4. 修复CUDA软链接

确保/usr/local/cuda软链接指向正确的CUDA版本:

# 先删除旧链接
sudo rm /usr/local/cuda
# 建立新链接指向cuda-12.2
sudo ln -s /usr/local/cuda-12.2 /usr/local/cuda

5. 补充环境变量

在.bashrc中添加CMAKE_PREFIX_PATH:

export CMAKE_PREFIX_PATH=/usr/local/cuda-12.2:$CMAKE_PREFIX_PATH

执行source ~/.bashrc生效后,再重新运行CMake。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:58:13