C++ 包管理工具 vcpkg 配置国内镜像源

第一部分:配置国内镜像源

1.1 方法一:使用环境变量(推荐)

设置镜像源环境变量:

# 设置清华镜像源$env:VCPKG_DOWNLOAD_MIRROR="https://mirrors.tuna.tsinghua.edu.cn/github-release/ninja-build/ninja/"$env:X_VCPKG_ASSET_SOURCES="x-azurl,https://mirrors.tuna.tsinghua.edu.cn/vcpkg/assets/"# 或者使用中科大镜像源$env:VCPKG_DOWNLOAD_MIRROR="https://mirrors.ustc.edu.cn/github-release/ninja-build/ninja/"$env:X_VCPKG_ASSET_SOURCES="x-azurl,https://mirrors.ustc.edu.cn/vcpkg/assets/"

1.2 方法二:修改 vcpkg 配置文件

在 vcpkg 根目录创建或修改 triplets\x64-windows.cmake 文件,添加:

# 在文件末尾添加以下内容 set(VCPKG_DOWNLOAD_MIRROR "https://mirrors.tuna.tsinghua.edu.cn/github-release/ninja-build/ninja/") set(X_VCPKG_ASSET_SOURCES "x-azurl,https://mirrors.tuna.tsinghua.edu.cn/vcpkg/assets/") 

第二部分:完整的解决方案

2.1 一次性解决方案

# 1. 设置镜像源环境变量$env:VCPKG_DOWNLOAD_MIRROR="https://mirrors.tuna.tsinghua.edu.cn/github-release/ninja-build/ninja/"$env:X_VCPKG_ASSET_SOURCES="x-azurl,https://mirrors.tuna.tsinghua.edu.cn/vcpkg/assets/"# 2. 设置代理(如果你有代理的话)# $env:HTTP_PROXY="http://127.0.0.1:10809"# $env:HTTPS_PROXY="http://127.0.0.1:10809"# 3. 先单独安装 ninja(解决你当前的错误).\vcpkg.exe install ninja:x64-windows # 4. 然后再安装 opencv4.\vcpkg.exe install opencv4:x64-windows 

2.2 永久配置方案

创建 set-mirror.ps1 脚本文件:

# set-mirror.ps1 - 设置vcpkg镜像源echo"设置vcpkg国内镜像源..."# 设置环境变量(当前会话有效)$env:VCPKG_DOWNLOAD_MIRROR="https://mirrors.tuna.tsinghua.edu.cn/github-release/ninja-build/ninja/"$env:X_VCPKG_ASSET_SOURCES="x-azurl,https://mirrors.tuna.tsinghua.edu.cn/vcpkg/assets/"# 设置HTTP代理(如果有的话,取消注释并修改)# $env:HTTP_PROXY="http://127.0.0.1:10809"# $env:HTTPS_PROXY="http://127.0.0.1:10809"echo"镜像源设置完成!"echo"VCPKG_DOWNLOAD_MIRROR = $env:VCPKG_DOWNLOAD_MIRROR"echo"X_VCPKG_ASSET_SOURCES = $env:X_VCPKG_ASSET_SOURCES"# 测试下载.\vcpkg.exe search opencv4 

第三部分:手动下载解决方案

3.1 手动下载 ninja

如果镜像源还是不行,可以手动下载:

  1. 手动下载 ninja
    • 访问:https://github.com/ninja-build/ninja/releases/download/v1.13.1/ninja-win.zip
    • 或者从国内镜像:https://mirrors.tuna.tsinghua.edu.cn/github-release/ninja-build/ninja/v1.13.1/ninja-win.zip
  2. 放置文件
    • 将下载的 ninja-win.zip 放到 E:\YOLO\cpp\vcpkg-master\downloads\
    • 重命名为:ninja-win-1.13.1.zip
  3. 重新运行安装
.\vcpkg.exe install opencv4:x64-windows 

第四部分:分步安装策略

由于 OpenCV 依赖很多,建议分步安装:

# 1. 先安装基础依赖.\vcpkg.exe install zlib:x64-windows .\vcpkg.exe install libjpeg-turbo:x64-windows .\vcpkg.exe install libpng:x64-windows .\vcpkg.exe install libwebp:x64-windows # 2. 安装编译工具.\vcpkg.exe install ninja:x64-windows # 3. 安装其他依赖.\vcpkg.exe install protobuf:x64-windows .\vcpkg.exe install flatbuffers:x64-windows # 4. 最后安装 opencv.\vcpkg.exe install opencv4:x64-windows 

第五部分:使用预编译二进制文件

如果编译时间太长,可以考虑使用预编译的 OpenCV:

5.1 直接下载 OpenCV 预编译版本

  1. 访问 OpenCV官网
  2. 下载 Windows 版本(例如 opencv-4.11.0-windows.exe
  3. 解压到 C:\opencv
  4. 在 Visual Studio 中手动配置

5.2 手动配置 OpenCV

// 简单的测试程序#include<opencv2/opencv.hpp>#include<iostream>intmain(){ std::cout <<"手动配置OpenCV测试"<< std::endl;// 创建一个简单的图像 cv::Mat image(300,400, CV_8UC3, cv::Scalar(100,150,200)); cv::circle(image, cv::Point(200,150),50, cv::Scalar(0,0,255),-1); cv::imshow("手动配置测试", image); cv::waitKey(0);return0;}

第六部分:验证安装

安装成功后,创建测试文件:

// test_opencv.cpp#include<opencv2/opencv.hpp>#include<iostream>intmain(){ std::cout <<"OpenCV安装测试"<< std::endl; std::cout <<"OpenCV版本: "<< CV_VERSION << std::endl;// 测试基本功能 cv::Mat image = cv::imread("test.jpg");if(image.empty()){ std::cout <<"创建测试图像..."<< std::endl; image = cv::Mat(400,600, CV_8UC3, cv::Scalar(50,100,150)); cv::circle(image, cv::Point(300,200),80, cv::Scalar(0,255,0),-1); cv::putText(image,"OpenCV Works!", cv::Point(150,100), cv::FONT_HERSHEY_SIMPLEX,1.2, cv::Scalar(255,255,255),2);} cv::imshow("OpenCV测试", image); cv::waitKey(0);return0;}

总结建议

  1. 首选方案:使用环境变量设置清华镜像源
  2. 备用方案:手动下载 ninja 等工具
  3. 快速方案:直接下载 OpenCV 预编译版本
  4. 耐心等待:第一次编译 OpenCV 可能需要较长时间

Read more

C++ 日志系统实战第一步:项目功能与技术架构详解

C++ 日志系统实战第一步:项目功能与技术架构详解

C++-基于多设计模式下的同步&异步日志系统 全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的项目笔记吧~    (全文手敲,受益良多) 本人也是做到项目了,后面会日更项目笔记。  我们要实现日志系统,先了解 什么是日志?    程序运行过程中所记录的程序运行的状态信息。为什么要这些信息呢?便于程序员对程序运行状况判断,进而分析,修改代码子类的。所以 日志作用:记录了程序运行状态信息,便于程序员能够随时根据状态信息,对系统的运行状态,进行分析 项目功能:能够让用户非常简便的进行日志的输出,及其控制。 一.项目介绍 本项目主要实现一个日志系统,其主要支持以下功能: 支持多级别日志消息:(级别有:调试,提示,警告,错误,致命,不同级别对应不同场景:例如调试级别的日志不输出…)  支持同步日志和异步日志:(同步指的是该工作由自己干,异步指的是该工作由别人干,自己等结果就行)同步日志指的是将日志写入到文件或数据库中去,这个操作由业务线程自己完成。异步日志指的是,将日志放到内存中去,由于担心磁盘满了,

By Ne0inhk
【C++初阶】:C++入门相关知识(3):引用 & inline内联函数 & nullptr相关概念

【C++初阶】:C++入门相关知识(3):引用 & inline内联函数 & nullptr相关概念

🎈主页传送门:良木生香 🔥个人专栏:《C语言》 《数据结构-初阶》 《程序设计》《鼠鼠的C++学习之路》 🌟人为善,福随未至,祸已远行;人为恶,祸虽未至,福已远离 前言:在上一篇文章中,我们学习了C++的输入输出,缺省参数以及函数重载,这些都是C++入门必备的基础知识,那么在这篇文章中,我们就要来学习剩下C++其他的基础知识,那就是引用、inline、以及nullptr这些知识。 一、引用 1.1、引用的概念和定义 引用不是定义一个新变量,而是给已经存在的变量起一个别名,那么编译器就不会为别名重新开辟空间,它和引用变量共同使用同一块空间。就好比我们把土豆称为马铃薯,番茄称为西红柿一样,都是取了一个新的别名,但是东西是同一个东西,所以引用的语法如下: 类型& 别名 = 变量 使用方法如下: int a = 10; int&

By Ne0inhk
【C++】priority_queue和deque的使用与实现

【C++】priority_queue和deque的使用与实现

priority_queue与deque的使用与模拟实现 ✨前言:在C++ STL中,priority_queue和deque是两个重要的容器适配器,它们分别基于堆和双端队列的概念,为不同的应用场景提供了高效的解决方案。本文将深入探讨它们的使用方法、底层实现原理以及在实际开发中的应用选择。 📖专栏:【C++成长之旅】 目录 * priority_queue与deque的使用与模拟实现 * 一、priority_queue * 1.1 介绍 * 1.2 使用 * 1.3 模拟实现 * 二、deque * 2.1 介绍 * 2.2 缺陷 * 三、STL标准库中对于stack和queue的模拟实现 * 3.1 为什么选择deque作为stack和queue的底层默认容器 * 3.2 stack的模拟实现 * 3.3 queue的模拟实现 一、priority_

By Ne0inhk
计算机毕设java电子商务网站的设计与实现 基于Spring Boot的在线购物平台开发与实现 Java技术驱动的B2C网络商城系统构建

计算机毕设java电子商务网站的设计与实现 基于Spring Boot的在线购物平台开发与实现 Java技术驱动的B2C网络商城系统构建

计算机毕设java电子商务网站的设计与实现4940z9(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着互联网技术的飞速发展和移动支付的普及,电子商务已成为推动经济增长的重要引擎。传统零售模式面临渠道单一、运营成本高昂、客户触达受限等困境,而线上购物以其便捷性、多样性和价格优势赢得了消费者的青睐。与此同时,中小企业数字化转型需求迫切,亟需低成本、高效率的电商解决方案来拓展销售渠道、提升品牌影响力。然而,市面上成熟的电商平台往往存在入驻费用高、数据归属不清、功能同质化等问题,难以满足个性化运营需求。基于此,采用Java语言结合Spring Boot框架,开发一套电子商务网站,通过B/S架构实现商品展示、在线交易、订单管理、用户互动等核心功能,旨在为商家提供自主可控的线上销售平台,为消费者打造安全便捷的购物体验,助力数字经济的普惠发展。 系统功能模块 本系统采用Spring Boot作为后端开发框架,数据库选用MySQL进行数据存储,基于B/S架构设计。系统涵盖以下核心功能模块: 用户管理模块:实现用户基

By Ne0inhk