CMake编译Opencv报错及解决方案汇总

注意:该文章为公开免费的项目,我做这件事旨在让后来者少走弯路,如果大家对于编译Opencv过程中的错误有很好的解决方式,也可以私信我,我会将大家的回答放到该文档内,并注明作者。本文章一直更新。

1.DetectCXXCompiler.cmake

CMake执行【configure】后,信息栏提示:

CMake Warning at cmake/OpenCVDetectCXXCompiler.cmake:175 (message): OpenCV does not recognize MSVC_VERSION "1923". Cannot set OpenCV_RUNTIME Call Stack (most recent call first): CMakeLists.txt:153 (include)

(注意:配置为Windows 10专业版22H2,VS2022)

这是一个vs2022常见问题,主要是由于MSC_VER 未对应vs版本

解决方法:

在Opencv源文件内找到下面这个文件

 按照提示要求,找到第175行代码

将周围的代码改成和我一样的

### CMake 编译 OpenCV 错误 166 的解决方案 错误 166 是由于 MinGW 编译器无法找到 `gcc` 命令工具而导致的资源编译失败[^3]。具体来说,在构建过程中,CMake 尝试通过 `windres.exe` 工具预处理 `.rc` 资源文件并生成目标文件时发生异常。 以下是针对该问题的具体解决措施: #### 修改环境变量 确保系统的 PATH 环境变量中包含了 MinGW 的安装路径。例如,如果 MinGW 安装在 `C:\MinGW\bin` 中,则需要将其添加到系统 PATH 变量中。此操作允许系统识别 `gcc` 和其他必要的编译工具命令。 #### 配置 CMake 使用正确的编译器 可以通过指定 `-G` 参数来设置适合的生成器以及对应的编译器选项。对于 MinGW 用户,推荐使用以下命令启动 CMake 过程: ```bash cmake -G "MinGW Makefiles" .. ``` 此外,可以显式定义 C++ 和 C 编译器的位置以避免潜在冲突: ```bash cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. ``` #### 替换 windres 工具链 有时即使设置了正确的环境变量仍然会遇到类似的错误。此时可以选择手动替换默认使用的 GNU binutils 版本下的 `windres.exe` 到最新稳定版本,并重新尝试编译过程[^3]。 #### 更新或重装 MinGW 工具集 确认当前所用的 MinGW 是否为最新版本;如果不是的话建议升级至更新版本再做测试。旧版本可能存在兼容性缺陷从而引发此类问题[^3]。 --- ### 示例修正后的完整流程 假设已经正确配置好开发环境(包括但不限于安装了对应平台支持的 GCC/G++),那么完整的修复步骤如下所示: 1. **清理之前的构建缓存** 删除原有构建目录中的所有内容以便于干净地重建项目结构。 2. **执行新的 cmake 构建指令** ```bash mkdir build && cd build cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. ``` 3. **继续完成后续 make 步骤** 如果一切顺利则能够正常进入下一步制作阶段。 ```bash mingw32-make sudo mingw32-make install ``` 以上方法基本涵盖了大部分情况下因缺少必要组件而产生的类似错误情况的有效应对策略[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值