CMake Error NOTFOUND CUDA_nppi_LIBRARY (ADVANCED)

本文针对使用CUDA9编译OpenCV3.3时遇到的CMAKE错误问题提供了解决方案。通过修改OpenCVDetectCUDA.cmake文件中的特定行,可以有效避免编译过程中不必要的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做动作识别,编译cuda9下的opencv3.3,出现CMAKE error, NOTFOUND CUDA_nppi_LIBRARY (ADVANCED)

谷哥给出的解决办法在stackoverflow46584000中给出了解答,改变相关lib库名字,同时去掉sm20,但是没说完全,在实际编译的时候仍然会编译sm20,解决办法有两个:

solution 1:文件OpenCVDetectCUDA.cmake 133行的foreach(ARCH IN LISTS ARCH_LIST)的循环中,在if与else中间添加

  elseif(ARCH MATCHES "20")

solution 2:文件OpenCVDetectCUDA.cmake

  46行  set(_generations "Fermi"  "kepler" "Maxwell" "Pascal")  中  "Fermi"  去掉

推荐第二种,第一种是从cmake的-D FORCE_INLINES命令推出来的,后来第二次编译,发现第二种方法更从根本解决问题。

转载于:https://www.cnblogs.com/chendonghao/p/9238633.html

### 3.1 检查编译器安装与环境变量 `CMake Error: CMAKE_CXX_COMPILER not set` 表示 CMake 无法找到 C++ 编译器。这通常是因为系统中未安装编译器,或者环境变量未正确配置。例如,在 Windows 上使用 `NMake Makefiles` 生成器时,如果没有安装 Microsoft Visual C++ 编译器或未将其路径添加到系统 `PATH` 中,CMake 将无法识别编译器[^1]。 应确保已安装合适的编译器,如 `gcc`/`g++` 或 `MSVC`,并检查其路径是否包含在系统环境变量中。例如,在 Linux 或 macOS 上,可以使用以下命令验证编译器是否可用: ```bash which gcc which g++ ``` 在 Windows 上,可以使用命令行检查 `cl`(MSVC 编译器)是否存在: ```cmd where cl ``` ### 3.2 显式指定编译器路径 如果编译器已安装但 CMake 仍无法识别,可以通过命令行显式指定编译器路径。例如: ```bash cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ .. ``` 在 Windows 上使用 MSVC 时,应确保在 Visual Studio 的命令行环境中运行 CMake,或手动设置编译器路径。例如: ```cmd cmake -G "NMake Makefiles" -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl .. ``` 此方式可帮助 CMake 正确识别编译器并完成配置过程[^1]。 ### 3.3 使用正确的生成器 错误信息中提到 `Building for: NMake Makefiles`,并提示 `Running 'nmake' '-?' failed with: 系统找不到指定的文件`,这表明当前环境缺少 `nmake` 工具或未在支持的构建环境中执行命令。应确保使用的是 Visual Studio 提供的命令提示符,或在 Windows 上安装 Windows SDK 以获取 `nmake`。 可以尝试切换生成器,例如使用 `MinGW Makefiles`: ```bash cmake -G "MinGW Makefiles" .. ``` 这将使用 MinGW 编译器代替 MSVC,适用于没有安装 Visual Studio 的环境。 ### 3.4 清理缓存并重新配置 如果之前配置失败,可能残留了错误的缓存信息。建议删除构建目录中的 `CMakeCache.txt` 和 `CMakeFiles` 目录,然后重新运行 CMake: ```bash rm -rf CMakeCache.txt CMakeFiles cmake .. ``` 这样可以确保 CMake 重新检测编译器和构建环境,避免因旧配置导致的错误。 ### 3.5 检查 CMakeLists.txt 兼容性 错误信息中还包含 CMake 的弃用警告: ``` CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required): Compatibility with CMake < 2.8.12 will be removed from a future version of CMake. ``` 这表明 `CMakeLists.txt` 文件中指定的最低 CMake 版本过低,可能导致某些功能无法正常运行。建议更新 `cmake_minimum_required` 的版本为当前使用的 CMake 版本,例如: ```cmake cmake_minimum_required(VERSION 3.20) ``` 这样可以确保项目与当前 CMake 版本兼容,并避免因版本不匹配导致的配置问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值