当前位置: 首页 > article >正文

VS2019,VCPKG - 为VS2019添加VCPKG

文章目录

    • VS2019,VCPKG - 为VS2019添加VCPKG
    • 概述
    • 笔记
    • 前置条件
    • 迁出vcpkg到本地
    • 验证库安装
    • 更新已经安装的库
    • 删除指定的包
    • 安装VS2019能用的boost
    • vcpkg 2025.02.14 版本可以给VS2019用
    • 用VCPKG的好处
    • 备注
    • END

VS2019,VCPKG - 为VS2019添加VCPKG

概述

开源工程用到了VCPKG管理的包。
开源工程是VS2022的,用VS2019也能打开,将工具链换一下就行。
现在已经为VS2019添加了VCPKG, 记录一下。

笔记

前置条件

  1. 安装了git
  2. 安装了VS2019(有C++的负荷)
  3. 将VS2019界面改为英文
    在这里插入图片描述
    在这里插入图片描述

迁出vcpkg到本地

以管理员权限打开Git CMD

D:\3rd\vs

git clone git@github.com:microsoft/vcpkg.git 
# 等待迁出完成

# 安装vcpkg
cd vcpkg
.\bootstrap-vcpkg.bat

# 将vcpkg集成进VS2019
.\vcpkg integrate install

将powershell-core的路径加入自己用户的环境变量, 否则用VCPKG时,找不到pwsh.exe

D:\3rd\vs\vcpkg\downloads\tools\powershell-core-7.2.24-windows

VS2019中添加新源

VS → 工具 → 选项 → NuGet 包管理器 → 程序包源

在这里插入图片描述
程序包源为自己迁出的vcpkg工程中的子目录,如下:

D:\3rd\vs\vcpkg\scripts\buildsystems

验证库安装

# 看看装了啥库
.\vcpkg list 

# 搜索库, 如果看到的库是新版,不是自己想要的,那么就要将vcpkg的git版本向前退
.\vcpkg search boost

# 尝试安装库(拿一个小库来实验)
.\vcpkg --debug install winsock2:x64-windows

更新已经安装的库

./vcpkg.exe update --debug

在这里插入图片描述
在这里插入图片描述
这里看不到安装的那个库, 有点奇怪。是不是VS2019本身就有的库,安装完也没用。

包含头文件(如 #include <Winsock2.h>),编译无报错即表示成功

// test_vs2019_vcpkg.cpp

#include <iostream>
#include <Winsock2.h>

int main()
{
    std::cout << "Hello World!\n";
}

删除指定的包

打开 Git CMD

# 查看包列表
vcpkg list

# 将报名拷贝下来,运行下列命令
vcpkg remove --recurse [包的全名]

# 例子
vcpkg remove --recurse vcpkg-boost:x64-windows

安装VS2019能用的boost

# 从boost文档和源码中,并没有看到什么时候停止对VS2019的支持。
# 安装当前的最新版1.87.0, 已经不支持VS2019. 原因是有一个boost组件要求用VS2022
# 现在只能从源码中看TAG, 然后一个一个TAG的降版本,直到VS2019中能正常编译过。

# 先查看vcpkg的git版本,找到boost1.87.0之前的那个版本。
# 然后将vcpkg退回去

git fetch --tags
git tag --sort=-creatordate

gitk ./ports/boost/vcpkg.json
566f9496b7e00ee0cc00aca0ab90493d122d148a 在这个ID上变成了1.87.0

d5ec528843 (tag: 2025.02.14) Promote x64-windows-release out of community (#43555)
这是时间往前推的最近的稳定版,签到这个版本试试。

git checkout 2025.02.14

vcpkg install boost:x64-windows

vcpkg 2025.02.14 版本可以给VS2019用

// test_vs2019_vcpkg.cpp

#include <iostream>
#include <boost/filesystem.hpp> 
#include <boost/version.hpp> 

// Boost版本: 1_86
namespace fs = boost::filesystem;

int main() {
    // 打印Boost版本
    std::cout << "Boost版本: " << BOOST_LIB_VERSION << std::endl;

    // 遍历当前目录文件
    fs::path dir_path(".");
    if (fs::exists(dir_path) && fs::is_directory(dir_path)) {
        for (const auto& entry : fs::directory_iterator(dir_path)) {
            std::cout << entry.path().filename() << std::endl;
        }
    }

    return 0;
}

用VCPKG的好处

只需要勾选"使用VCPKG", 头文件和库文件都不用设置。
在这里插入图片描述

备注

如果是使用VS2019 + VCPKG, 那么VCPKG的版本最高只能为 2025.02.14,否则VCPKG本身的库编译过不了,现在发现是boost版本不能高于1.86.0。

如果是使用VS2019 + boost, 那么boost最高版本只能是1.86.0, 否则boost中有个组件需要依赖VS2022, 导致boost不能完全编译过。

END


http://www.kler.cn/a/574248.html

相关文章:

  • 【启发式算法】Dijkstra算法详细介绍(Python)
  • 高频 SQL 50 题(基础版)| 高级字符串函数 / 正则表达式 / 子句:1667. 修复表中的名字
  • Jenkins工具配置与运用指南:从零到持续交付
  • 网络安全 三高三弱治理
  • 【进程和线程】(面试高频考点)
  • HTML第四节
  • Android Studio快速配置国内镜像源和HTTP代理
  • python基础课程整理--元组的基础
  • 分类预测 | Matlab实现PSO-BP-Adaboost基于粒子群算法优化BP神经网络结合Adaboost思想的分类预测模型
  • 同一个网段的IP可以自由访问吗?不同网段的IP必须通过公网IP访问吗?
  • 【鸿蒙操作系统】- 1:实习阶段的一些总结
  • 【项目】视频点播
  • PTA 7-6 列出连通集
  • 在MWC2025,读懂华为如何以行践言
  • 考研初试需要准备多少时间用于复习备考?
  • Hadoop、Hive、Spark的关系
  • RecyclerView与ListView的优化
  • Android Studio Gradle 8.0 适配指南
  • 在大型语言模型的提示词设计中,system、user和assistant三个角色的区别与联系
  • 网络安全 | 密码基础知识介绍