windows下通过VSCode使用vcpkg 管理库开发opencv项目环境搭建

在 Windows 下使用 VSCode 开发 C++ OpenCV 项目,相比 Visual Studio 需要更多的手动配置,但胜在轻量且灵活。

这里有两种主流方案:

  1. 方案一(推荐):使用 vcpkg 管理库(自动化程度高,类似 Visual Studio 的体验,不易出错)。
  2. 方案二:手动编译配置 MinGW + OpenCV(传统方式,适合想深入了解编译原理的用户)。

方案二这里我直接去掉了,以后会补充

🚀 方案一:使用 vcpkg + CMake(强烈推荐)

这是微软官方推荐的现代 C++ 开发方式,它能自动帮你下载、编译和配置 OpenCV,省去繁琐的路径设置。

1. 准备工作
  • 安装 Visual Studio Code
  • 安装 Visual Studio Build Tools(或者安装 Visual Studio Community 并勾选"使用 C++ 的桌面开发"):VSCode 本身没有编译器,需要借用微软的 MSVC 编译器。
  • 安装 CMake :下载并安装 CMake,务必在安装时勾选"将 CMake 添加到系统 PATH"
2. 安装 vcpkg
  1. 打开终端(PowerShell 或 CMD),进入你想安装工具的目录(例如 D:\DevTools)。

  2. 运行以下命令克隆 vcpkg:

    bash 复制代码
    git clone https://github.com/Microsoft/vcpkg.git
    cd vcpkg
    .\bootstrap-vcpkg.bat
  3. 集成 vcpkg :运行以下命令,让 vcpkg 全局生效:

    bash 复制代码
    .\vcpkg integrate install
  4. 安装 OpenCV

    bash 复制代码
    .\vcpkg install opencv:x64-windows
3. 在 VSCode 中配置
  1. 安装 VSCode 插件:C/C++ (Microsoft 出品) 和 CMake Tools (Microsoft 出品)。

  2. 新建一个空文件夹作为项目目录,用 VSCode 打开。

  3. 在文件夹中创建一个 CMakeLists.txt 文件,内容如下:

    cmake 复制代码
    cmake_minimum_required(VERSION 3.10)
    project(OpenCVTest)
    
    set(CMAKE_CXX_STANDARD 17)
    
    # 自动查找 vcpkg 安装的 OpenCV
    find_package(OpenCV REQUIRED)
    
    add_executable(main main.cpp)
    
    # 链接 OpenCV 库
    target_link_libraries(main PRIVATE ${OpenCV_LIBS})
  4. 创建一个 main.cpp 编写代码(见后文验证部分)。

  5. 点击 VSCode 底部状态栏的 "Select Kit" 选择编译器(选 Visual Studio Community/Build Tools 版本),然后点击 "Configure"。CMake Tools 会自动识别 vcpkg 中的 OpenCV。


✅ 验证代码 (通用)

无论使用哪种方案,都可以用这段代码测试:

cpp 复制代码
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main() {
    // 请确保项目目录下有一张名为 test.jpg 的图片
    Mat img = imread("test.jpg");

    if (img.empty()) {
        cout << "无法加载图片,请检查路径!" << endl;
        return -1;
    }

    imshow("OpenCV Test", img);
    waitKey(0);
    return 0;
}

解决问题1 vcpkg 是什么

简单来说,vcpkg 是微软开发并开源的一个 C/C++ 包管理器 。你可以把它理解为 C++ 界的 npm (Node.js) 或 pip (Python),它的核心作用是帮你自动下载、编译、安装和管理 C++ 第三方库(如 OpenCV, Boost, gRPC 等)。

vcpkg 其实就是为了解决"手动配置环境太麻烦"这个问题而生的:

1. 它解决了什么痛点?

在没有 vcpkg 之前(也就是你之前可能经历的"手动配置"过程),在 Windows 上使用一个 C++ 库通常需要:

  1. 去官网找下载链接。
  2. 下载源码或预编译包。
  3. 解压到特定目录。
  4. 痛苦地配置:手动设置 Visual Studio 或 VSCode 的"包含目录"、"库目录"和"附加依赖项"。
  5. 如果换了电脑或升级了编译器,上述步骤可能要重来一遍。

vcpkg 的做法是

你只需要在命令行输入 vcpkg install opencv,它就会自动帮你把源码下载下来,用你当前的编译器(MSVC 或 MinGW)编译好,并自动配置好环境变量和路径,让你的项目能直接找到它。

2. vcpkg 的核心特点

  • 跨平台:虽然它是微软亲儿子,但它不仅支持 Windows,还支持 Linux 和 macOS。
  • 源码编译(默认)
    • 这是 vcpkg 最强大的地方。它通常不直接给你二进制文件,而是下载源码在本地编译。
    • 好处:这保证了库和你的项目使用完全相同的编译器版本和运行时设置(比如都是静态链接或都是动态链接),极大地减少了"链接错误"或"运行时崩溃"的问题。
  • 海量库支持 :官方仓库目前收录了超过 2000 个 开源库(Port),涵盖了绝大多数常用的 C++ 库。
  • 与构建系统集成 :它能完美配合 CMakeVisual Studio。在 VSCode 中使用 CMake Tools 时,vcpkg 可以实现"零配置"链接库。

3. 两种使用模式

vcpkg 有两种主要的工作方式,你可以根据需求选择:

模式 描述 适用场景
经典模式 (Classic) 类似全局安装。你在 vcpkg 里装好库,所有项目都能用。 个人学习、简单的单文件测试、不想配置项目的场景。
清单模式 (Manifest) 推荐 。在项目文件夹里放一个 vcpkg.json 文件,声明项目依赖什么库。当你编译项目时,vcpkg 会自动检测并安装所需的库。 正式项目开发、团队协作、需要锁定特定库版本的场景。

4. 为什么推荐你在 VSCode 中使用它?

回到你刚才的问题,在 VSCode 中手动配置 OpenCV 的 includePathlinker 路径非常容易出错(比如路径写错、Debug/Release 版本搞混)。

使用 vcpkg 后,你的 CMakeLists.txt 只需要写两行核心代码:

cmake 复制代码
find_package(OpenCV REQUIRED) # 告诉 CMake 找 OpenCV
target_link_libraries(main PRIVATE ${OpenCV_LIBS}) # 链接它

剩下的事情(库在哪里、叫什么名字、依赖什么系统库),vcpkg 会通过工具链文件自动告诉 CMake。这极大地简化了 VSCode 的开发体验。

总结

vcpkg 就是一个帮你"一键安装"C++ 库,并自动帮你把"路"铺好,让你的编译器能直接找到这些库的工具。 对于 Windows 下的 C++ 开发者来说,它是目前最主流、最高效的选择。

解决问题2:安装Visual Studio Build Tools

安装 Visual Studio Build Tools 其实非常简单,它是让你在 Windows 上拥有 C++ 编译能力(MSVC)的核心工具,而且不需要安装庞大的 Visual Studio 完整 IDE。

鉴于你正在配置 OpenCV 和 vcpkg 环境,安装它是至关重要的一步。以下是详细的安装步骤:

🚀 第一步:下载安装程序

访问微软官方下载页面:Visual Studio Build Tools 下载

找到 "下载生成工具" 按钮,点击后会下载一个名为 vs_BuildTools.exe 的小文件(这是引导安装程序)。

⚙️ 第二步:运行安装程序

双击运行下载好的 vs_BuildTools.exe。

等待安装程序加载,可能会提示你同意许可条款,点击 "继续"。

📦 第三步:选择工作负载(最关键的一步)

在安装界面中,你会看到很多选项,请务必按照以下说明操作:

点击 "工作负载" 选项卡。

找到并勾选 "C++ 生成工具" (C++ build tools)。

重要:勾选后,请看右侧的 "安装详细信息" 面板,确保以下核心组件被选中(通常默认会选中):

MSVC v143 - VS 2022 C++ x64/x86 生成工具(这是编译器核心)。

Windows 10 SDK 或 Windows 11 SDK(这是开发 Windows 程序必须的,版本号根据你系统自动匹配即可)。

C++ CMake 工具(建议勾选,配合 VSCode 使用)。

📥 第四步:完成安装

确认选择无误后,点击右下角的 "安装" 按钮。

此时会开始下载和安装文件,根据网速和电脑性能,可能需要 5 到 20 分钟。

安装完成后,点击 "启动" 或关闭窗口。

✅ 第五步:验证安装

为了确保安装成功,你可以简单验证一下:

按下 Win + R,输入 cmd 打开命令提示符。

输入以下命令并回车:

cl

如果屏幕显示了 Microsoft ® C/C++ 优化编译器... 的版本信息,说明安装成功!

💡 避坑小贴士

不要混淆:你安装的是 Build Tools,不是完整的 Visual Studio IDE。Build Tools 更轻量,专门用于命令行编译(如 vcpkg 和 CMake)。

环境变量:安装完成后,通常不需要手动配置环境变量。vcpkg 和 CMake 会自动检测并使用它。如果你在 VSCode 中遇到找不到编译器的问题,重启一下电脑通常能解决。

磁盘空间:请确保 C 盘至少有 5GB - 10GB 的剩余空间。

问题解决3 安装Visual Studio Build Tools 的时候,一定要选MSVC编译器吗,MinGW可以吗

简单直接的回答:不可以。

在安装 Visual Studio Build Tools 时,你必须 选择 MSVC 编译器,无法选择 MinGW。

这是因为 Visual Studio Build Tools 本质上就是微软官方提供的 MSVC 编译器工具包。它的存在目的就是为了让你在没有 Visual Studio 完整 IDE 的情况下,依然能使用微软的 MSVC 编译器。

以下是详细的解释和建议,帮助你理清这两者的关系:

1. 为什么 Build Tools 里没有 MinGW?

  • 阵营不同
    • Visual Studio Build Tools 是微软(Microsoft)的产品,它包含的是 MSVC(Microsoft Visual C++)编译器。
    • MinGW 是开源社区维护的项目,它是 GCC 编译器在 Windows 上的移植版。
  • 包含关系
    • 微软不可能把竞争对手(GCC/MinGW)打包进自己的官方工具包里。
    • 如果你安装了 Build Tools,你就拥有了 MSVC;如果你想用 MinGW,你需要另外单独下载 MinGW-w64。

2. 既然你要用 vcpkg,选 MSVC 是最佳选择

结合你之前提到的 vcpkgOpenCV 需求,安装 Build Tools 并选择 MSVC 其实是最推荐的方案,原因如下:

  • vcpkg 的"亲儿子"待遇
    vcpkg 是微软开发的,它对 MSVC 的支持是最完美的。当你运行 vcpkg install opencv 时,它会自动检测并使用你安装的 Visual Studio Build Tools (MSVC) 来编译 OpenCV。
  • 避免"地狱级"配置
    • MSVC 路线:安装 Build Tools -> vcpkg 自动识别 -> 编译 OpenCV -> 完成。
    • MinGW 路线:你需要手动下载 MinGW -> 手动配置环境变量 -> 告诉 vcpkg 使用 MinGW -> 可能会遇到各种 ABI 兼容性问题 -> 编译 OpenCV。
  • OpenCV 的兼容性
    OpenCV 官方在 Windows 上主要测试和优化的就是 MSVC 版本。使用 MSVC 编译的 OpenCV 通常比 MinGW 版本更稳定,尤其是在处理图像显示(HighGUI 模块)时。

3. 你现在的最佳行动方案

既然你已经准备安装 Visual Studio Build Tools,请按照以下步骤操作,这将是你在 Windows 上配置 C++ 环境最省心的路径:

  1. 安装 Build Tools
    • 运行安装程序。
    • 必选 :勾选 "C++ 生成工具"(这会安装 MSVC 编译器和 Windows SDK)。
    • 推荐 :在右侧详细信息中勾选 "C++ CMake 工具"
  2. 配置 vcpkg
    • 安装好 Build Tools 后,重启电脑。
    • 打开终端,运行 vcpkg install opencv
    • vcpkg 会自动发现刚才安装的 MSVC,并开始下载编译 OpenCV。
  3. 在 VSCode 中开发
    • VSCode 安装 C/C++ 插件后,会自动检测到你安装了 MSVC。
    • 你不需要手动配置 g++.exe 路径,CMake 会自动使用 MSVC (cl.exe) 进行编译。

总结:

虽然 MinGW 很好(轻量、类 Linux 体验),但在使用 Visual Studio Build Toolsvcpkg 这个组合时,MSVC 是唯一且最佳的选择。放心安装 MSVC 吧!

解决问题3 141142不用选吗


完全不用选,放心大胆地只留最新版!

对于你现在的配置(OpenCV + vcpkg + VSCode),只勾选最新的那个版本(MSVC v143)就足够了

以下是为什么要这样选的详细理由:

🎯 为什么不用选 141/142?

  • 向后兼容性

    MSVC 编译器具有很好的向后兼容性。

    • v143 (VS 2022) 可以编译绝大多数为旧版本(如 VS 2019/v142, VS 2017/v141)编写的代码。
    • 除非你接手了一个非常古老、必须用旧版编译器才能编译通过的"祖传项目",否则永远优先使用最新版。
  • vcpkg 的机制

    vcpkg 默认会寻找系统中最新版本的 Visual Studio 构建工具。

    • 如果你只装了 v143,vcpkg 就会用 v143 来编译 OpenCV。
    • 如果你装了 v143 和 v141,vcpkg 还是优先用 v143。
    • 结论:装旧版本只会占用额外的几个 GB 硬盘空间,没有任何好处。
  • Windows SDK 的选择

    注意看你勾选了 Windows 11 SDK (10.0.26100.7705)

    • 编译器 (MSVC) 和 SDK 是配套的。既然你选了最新的 SDK,配合最新的编译器 (v143) 是最稳妥的。

💡 一个小建议(关于 vcpkg 那个勾)

我看你的截图中勾选了 vcpkg 包管理器(倒数第四个)。

  • 这个勾不是必须的
    虽然在这里勾选可以让 Visual Studio 自动集成 vcpkg,但作为开发者,手动通过命令行使用 vcpkg(就像我们之前讨论的那样)通常更灵活,也更容易理解原理。
  • 如果你不想让 VS 变得太臃肿
    你可以把这个勾去掉。直接在命令行里使用你之前下载的 vcpkg 即可,效果是一模一样的。

📌 总结

你的勾选方案非常完美:

  1. MSVC v143 (最新版) -> 保留
  2. Windows 11 SDK -> 保留
  3. CMake 工具 -> 保留
  4. v141 / v142 -> 全部去掉,不用装

直接点击"安装"即可!

执行git clone https://github.com/Microsoft/vcpkg.git

遇到问题1:

AI给出了如下的方案:

从你提供的截图来看,这是一个典型的 Git SSL 证书验证失败 问题。

错误信息 fatal: unable to access 'https://github.com/...': SSL certificate problem: unable to get local issuer certificate 的意思是:Git 在尝试通过 HTTPS 协议克隆仓库时,无法验证 GitHub 服务器的 SSL 证书,因为它在本地找不到受信任的证书颁发机构(CA)。

这个问题在 Windows 上使用 Git Bash (MINGW64) 时比较常见,通常有以下几种原因和解决方法:

解决方案

方法一:临时关闭 SSL 验证(最快,但有安全风险)

这是最直接的解决方法,适合在受信任的网络环境下快速解决问题。它会告诉 Git 在克隆时跳过证书检查。

bash 复制代码
git -c http.sslVerify=false clone https://github.com/Microsoft/vcpkg.git

注意:此方法会降低安全性,因为它使你容易受到中间人攻击。建议仅在测试或确认网络安全时使用。

方法二:配置 Git 使用正确的 CA 证书(推荐)

Git 需要一个包含受信任根证书的 CA 证书包来验证服务器。如果这个路径配置错误,就会报错。

  1. 找到你的 Git 安装目录下的 ca-bundle.crt 文件

    • 通常路径是 C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crtC:\Program Files\Git\usr\ssl\certs\ca-bundle.crt
  2. 告诉 Git 这个文件的位置

    • 打开 Git Bash,执行以下命令(请根据你实际的路径修改):
    bash 复制代码
    git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"

    提示 :在 Git Bash 中,路径分隔符请使用正斜杠 /,或者用双反斜杠 \\

配置完成后,再次尝试克隆,问题通常就能解决。

方法三:更新 Git 到最新版本

老版本的 Git 可能内置的 CA 证书包已经过期,或者存在已知的 SSL/TLS 协议兼容性问题。

  1. 检查你的 Git 版本:

    bash 复制代码
    git --version
  2. 前往 Git 官网 下载并安装最新版本的 Git for Windows。新版本通常会自带最新的证书包。

方法四:检查网络环境(公司代理或防火墙)

如果你在公司网络或使用某些特殊网络环境,可能是公司的代理服务器或防火墙拦截并替换了 HTTPS 证书。

  • 如果是这种情况,你需要联系公司的 IT 部门,获取他们内部使用的根证书,并将其添加到 Git 的信任列表中。
  • 或者,你也可以尝试在没有代理的网络环境(例如手机热点)下再次执行克隆命令,以确认是否是网络环境问题。

我采用了第一种,git -c http.sslVerify=false clone https://github.com/Microsoft/vcpkg.git结果发现速度太慢,使用了各种方式解决,凌晨5点醒来再次尝试,速度很快,成功了.暂时定位为国内白天网速太慢,先往下接着弄.

到此处vcpkg终于下载成功了,再执行后面的命令进行安装和集成就可以了.

安装opencv

之后执行.\vcpkg install opencv:x64-windows安装opencv,发现根本不行,需要安装很多依赖库,靠国内的网完全搞不定,一直报错,然后我根据报错信息,把十几个依赖库一次下载下来

下载了这么多,同时还对powershell进行了升级,有经验的小伙伴如果有好的办法可以回复一下:

从你的截图来看,这次安装失败的原因,和刚才一模一样------还是网络连接问题 ,导致 vcpkg 无法下载它运行所需的 PowerShell 核心组件

这里有一个非常关键的概念需要理清:

❓ 为什么配置了 Gitee 还是没用?

你通过 Gitee 成功,很可能只是成功更新了 vcpkg 的源代码 (也就是 ports 文件夹里的安装脚本)。

但是,vcpkg 这个工具本身在运行安装脚本前,会先检查自己的运行环境 。它发现你的系统里缺少或版本过低的 PowerShell,于是它硬编码要去 GitHub 官方地址下载一个 PowerShell。

这个"下载 PowerShell"的步骤,是不受 Gitee 镜像源控制的! 它依然会去连 GitHub,所以依然会报 SSL connect error


🚀 终极解决方案:手动补全环境

既然 vcpkg 自动下载失败,我们就手动帮它把环境配好,让它跳过下载步骤。

第一步:检查你的 PowerShell 版本

在你的 Windows 搜索栏搜 "PowerShell",右键以管理员身份运行,输入:

powershell 复制代码
$PSVersionTable.PSVersion
  • 如果你的版本低于 7.5(比如是 5.1 或者 7.2),那确实需要升级。
  • 如果你的版本已经是 7.4 或更高,可能是 vcpkg 没识别到。
第二步:手动下载并安装 PowerShell(推荐)

与其让 vcpkg 去下载,不如你自己下载一个最新的,一劳永逸。

  1. 去 GitHub 手动下载

    • 访问这个地址(如果打不开,就用你的 Gitee/代理工具):
      https://github.com/PowerShell/PowerShell/releases/tag/v7.5.4
    • 找到 Assets ,下载 PowerShell-7.5.4-win-x64.zip(或者是 .msi 安装包,推荐 .msi,因为它会自动配置环境变量)。
  2. 安装/解压

    • 如果是 .msi,双击安装即可。
    • 如果是 .zip,解压到一个固定目录,比如 C:\Program Files\PowerShell\7
  3. 确保它在环境变量里

    • 安装好后,重新打开你的 MINGW64 终端。
    • 输入 pwsh --version
    • 如果能看到版本号,说明安装成功且环境配置好了。
第三步:重新运行 vcpkg

当你电脑里有了合格的 PowerShell 后,再次运行:

bash 复制代码
./vcpkg install opencv:x64-windows

这时,vcpkg 会检测到:"哦,系统里已经有 PowerShell 了,不需要再去 GitHub 下载了。" 它就会跳过那个报错的步骤,直接开始下载 OpenCV 的二进制包(这时候速度就会飞快)。


💡 备选方案:强制使用系统自带的 PowerShell

如果你不想折腾 PowerShell 7,可以尝试告诉 vcpkg 别那么挑剔(虽然不一定成功,取决于 vcpkg 版本):

在运行安装命令前,设置一个环境变量,强制它使用系统路径下的 PowerShell:

bash 复制代码
export VCPKG_FORCE_SYSTEM_BINARIES=1
./vcpkg install opencv:x64-windows

总结:现在的瓶颈不在 OpenCV,而在 vcpkg 自己的"启动器"(PowerShell)没装好。先把 PowerShell 装好,后面的路就顺了。

最后下载opencv-opencv-4.12.0.tar.gz包的时候,折腾了一天,下载下来后安装一直报错,不是名称不对,就是哈希值不对,真的搞郁闷了.最后我不根据错误提示给出的下载路径直接下载,而是自己去 github找,下载下来一下就成功了,我问了AI原因:

我来给你揭开这个超级大坑的终极真相

你现在的发现100%正确

vcpkg 里写的地址,在今天的 GitHub 上,确实 = 错误地址!

复制代码
vcpkg 写的:https://github.com/opencv/opencv/archive/4.12.0.tar.gz
你实际能用的:https://github.com/opencv/opencv/archive/refs/tags/4.12.0.tar.gz

这两个文件不一样大、不一样哈希、不能通用!


🔥 为什么官方命令会给"错误链接"?

原因只有一句话:

vcpkg 的配置文件过时了,跟不上 GitHub 的网址规则变化!

我给你用最简单的话讲清楚:


1. 以前 GitHub 长这样(多年前)

下面这种链接是完全正常工作的:

复制代码
github.com/opencv/opencv/archive/4.12.0.tar.gz

不需要 refs/tags/


2. 后来 GitHub 悄悄改了规则

GitHub 强制要求 tag 必须写全路径

复制代码
archive/refs/tags/4.12.0.tar.gz

旧格式不删除,但返回的内容不一样!

返回的不是正确的 tag 源码,而是某个 commit 快照!

文件变了 → 哈希不对 → vcpkg 报错


3. vcpkg 没更新!

vcpkg 里面的 opencv 配置文件
还停留在多年前的旧写法!

cmake 复制代码
vcpkg_from_github(
    REPO opencv/opencv
    REF 4.12.0
    ...
)

它自动生成旧格式 URL,而这个 URL
今天的 GitHub 已经不返回正确文件了!
是 vcpkg 本身的配置过时了!

🎯 最终结论

vcpkg 提供的地址 = 过时 = 错误

你自己找到的地址 = 最新 GitHub 标准 = 正确

两个文件不一样大!

旧地址返回错误文件!

到这里,Windows 下,vscode开发环境,使用vcpkg部署opencv开发环境就结束了.

cmake opencv内容不在这里展示

相关推荐
其实防守也摸鱼5 小时前
GDB安装与配置(保姆级教程)【Linux、Windows系统】
linux·运维·windows·命令模式·工具·虚拟机·调试
武藤一雄13 小时前
19个核心算法(C#版)
数据结构·windows·算法·c#·排序算法·.net·.netcore
sali-tec13 小时前
C# 基于OpenCv的视觉工作流-章52-交点查找
图像处理·人工智能·opencv·算法·计算机视觉
淼淼爱喝水16 小时前
ESXi 给 Windows Server 2008 虚拟机添加磁盘教程
windows·esxi·虚拟机
勤自省16 小时前
《RDK X5 ROS 2 Humble 安装与验证:从零到 Hello World》
windows·ubuntu·ssh·ros2
docsz16 小时前
Windows开发环境配置
windows
eggwyw17 小时前
PHP搭建开发环境(Windows系统)
开发语言·windows·php
玄月三初18 小时前
使用pandoc把word转换成markdown格式
vscode·word·markdown
533_19 小时前
[vscode] 禁止保存自动格式化
vscode