在windows环境中使用vcpkg+cmake完成类linux的c++开发环境配置

Win10+VS2019安装vcpkg windows+VS2019安装vcpkg 阅读详情

由于众所周知的原因,在 windows 下进行 c++开发是一件极其痛苦的事情。我也多次因为无法在 windows 下配置开发环境而转向 linux 开发。我在最近移植我的 linux 应用时,发现了一个在 windows 下非常方便的 c++安装包管理器。这个就是 vcpkg。通过使用 vcpkg,可以在 windows 上实现 linux 一样的开发环境。

本篇文章旨在为各位提供一个新的环境配置思路。我本人也是刚开始研究这个软件,难免会有众多疏忽。

个人博客:http://www.ghost-him.com/

1. 安装 vcpkg 与 cmake

首先要安装 vcpkg 与 cmake,安装的过程已经有很多人写了相应的文章了,这里就不赘述了。

安装对应的库

安装库的命令是

vcpkg install [库的名字]

这里给几个示例:

安装 trantor 库
vcpkg install trantor
安装 openssl 库
vcpkg install openssl

整合第三方库

使用命令 vcpkg integrate install。这个命令的作用是:配置vcpkg以便在Visual Studio项目中自动包含库文件。执行该命令后,通过vcpkg安装的库将被集成到Visual Studio的项目中,使得开发者无需手动配置库路径,可以直接在项目中包含和使用这些库。这简化了项目配置过程,提高了开发效率。

在运行后,可以看到提示:

CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/software/vcpkg-2024.01.12/scripts/buildsystems/vcpkg.cmake"

All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available.

这里的意思就是,如果我们使用 cmake。则在构建时,应该添加上 -DCMAKE_TOOLCHAIN_FILE=C:/software/vcpkg-2024.01.12/scripts/buildsystems/vcpkg.cmake
。** 每个人的 vcpkg 的安装目录均不同,所以要按照自己的提示来写!**

修改 CMakeLists.txt

每次添加完一个第三方库都要在 cmake 中添加 vcpkg 所给出的安装信息。

以 openssl 为例。

运行 vcpkg install openssl。以后,可以看到给出的信息:

PS C:\software\vcpkg-2024.01.12> .\vcpkg.exe install openssl
warning: In the September 2023 release, the default triplet for vcpkg libraries changed from x86-windows to the detected host triplet (x64-windows). For the old behavior, add --triplet x86-windows . To suppress this message, add --triplet x64-windows .
Computing installation plan...
The following packages are already installed:
    openssl:x64-windows@3.2.0#2
openssl:x64-windows is already installed
Total install time: 275 us
The package openssl is compatible with built-in CMake targets:

    find_package(OpenSSL REQUIRED)
    target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)

PS C:\software\vcpkg-2024.01.12>

这里的意思是如果使用 cmake,则要添加

find_package(OpenSSL REQUIRED)
target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)

(这里可以发现,使用 cmake 与 linux 基本一致,很方便,也不用自己去设置环境变量)

编译运行

cmake -B build -DCMAKE_TOOLCHAIN_FILE=C:/software/vcpkg-2024.01.12/scripts/buildsystems/vcpkg.cmake

cmake --build build

完成。

从头到尾的一个示例

安装 openssl(其它库的安装与这个库的安装流程一致)

vcpkg install openssl

整合

vcpkg integrate install

修改

cmake_minimum_required(VERSION 3.5)
project(vcpkgTest)

# Create the library
add_executable(common main.cpp)

# Find required packages
find_package(OpenSSL REQUIRED)

# Link with found packages
target_link_libraries(common PRIVATE OpenSSL::SSL OpenSSL::Crypto)

编写测试代码

main.cpp:(生成一对 ecc 公钥与私钥)

#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <openssl/err.h>
#include <iostream>
int main()
{
    std::string publicKey, privateKey;
    EC_KEY *ecKey = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); // 使用P-256曲线
    if (ecKey != nullptr && EC_KEY_generate_key(ecKey))
    {
        BIO *pub = BIO_new(BIO_s_mem());
        BIO *priv = BIO_new(BIO_s_mem());
        if (PEM_write_bio_EC_PUBKEY(pub, ecKey) && PEM_write_bio_ECPrivateKey(priv, ecKey, nullptr, nullptr, 0, nullptr, nullptr))
        {
            size_t pubLength = BIO_pending(pub);
            size_t privLength = BIO_pending(priv);
            publicKey.resize(pubLength + 1);
            privateKey.resize(privLength + 1);
            BIO_read(pub, (void *)publicKey.c_str(), pubLength);
            BIO_read(priv, (void *)privateKey.c_str(), privLength);
            
            publicKey[pubLength] = '\0';
            privateKey[privLength] = '\0';
        }
        BIO_free_all(pub);
        BIO_free_all(priv);
    }
    EC_KEY_free(ecKey);
    std::cout << publicKey << " | " << privateKey << std::endl;
    return 0;
}

构建

cmake -B build -DCMAKE_TOOLCHAIN_FILE=C:/software/vcpkg-2024.01.12/scripts/buildsystems/vcpkg.cmake

编译

cmake --build build
vcpkg快速入门手册 文章目录1. 简介2. 安装与使用2.1 获取vcpkg2.2 编译vcpkg2.3 vcpkg的文件夹层次结构2.4 设置vcpkg的环境变量2.5 vcpkg的常用命令2.6 安装包与Visual Studio集成3. 常见的C++库的CMake配置方式3.1 Boost3.2 cereal3.3 Ceres Solver3.4 CGAL3.5 FLANN3.6 GDAL3.7 GLEW3.8 GMP3.9 GTest3.10 GSL3.11 HDF53.12 Lastools/Laslib3.13 O 阅读详情

相关推荐

VS2019开发者必看:vcpkg包管理器从安装到项目集成的完整避坑指南

本文为VS2019开发者提供vcpkg包管理器的完整使用指南,涵盖从安装到项目集成的全流程。针对C++开发中的常见问题,如网络配置、架构选择和依赖管理,提供实用解决方案和避坑技巧,帮助开发者高效管理第三方库,提升开发效率。

g9h0i1的博客 85

【配置环境】Windows和Linux下安装和使用C/C++第三方库管理工具vcpkg

vcpkg安装使用,第三方库管理,一键下载编译配置,十分方便

weixin_43729127的博客 1万+

C++跨平台编译实战:基于CMake与Visual Studio的Windows/Linux开发环境搭建

跨平台编译是现代软件开发中的核心需求,它允许同一套源代码在不同操作系统上构建运行,从而提升代码复用率和团队协作效率。其实现原理主要依赖于构建系统对平台差异的抽象和统一管理。在C++领域,CMake作为事实标准的元构建工具,通过编写平台中立的CMakeLists.txt文件,能够自动生成各平台原生的构建脚本(如Windows的Visual Studio解决方案或Linux的Makefile),解决了构建脚本不兼容的根本问题。这项技术的核心价值在于统一开发流程、降低维护成本,并支撑服务端(Linux)与客户端(

weixin_30607659的博客 422

vcpkg工具+vs2019

好处 自动处理库依赖, 不需额外配置库 include路径 和库 lib路径 Applied user-wide integration for this vcpkg root. All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available

平凡者的专栏 2366

C++ AI开发环境配置全攻略:Vcpkg、CMake与ONNX Runtime实战

在人工智能与高性能计算领域,C++因其卓越的执行效率和对系统资源的精细控制,成为部署AI模型的关键语言。其核心原理在于通过直接内存操作和编译器优化,实现接近硬件的计算性能,这对于实时推理和资源受限场景至关重要。从技术价值看,C++环境下的AI集成能显著降低延迟、提升吞吐量,并便于将模型嵌入到现有的大型C++工程体系中。常见的应用场景包括嵌入式设备推理、高性能服务器后端以及游戏引擎中的智能模块。本文聚焦于解决C++集成AI库时的核心痛点——**环境配置**,深入探讨如何利用**Vcpkg**等现代包管理工具,

weixin_34198762的博客 340

Windows平台C++开发环境配置全攻略:MSVC+VSCode+CMake实战指南

C++作为高性能系统开发的核心语言,其开发环境的搭建是项目启动和工程实践的首要步骤。环境配置的稳定性直接关系到编译效率、调试体验和团队协作。在Windows平台上,微软的MSVC编译器凭借与操作系统深度集成、对最新C++标准(如C++20/23)的快速支持以及卓越的调试体验,成为原生开发的首选。结合轻量、可扩展的Visual Studio Code编辑器,开发者可以获得高度定制化的编码环境。通过CMake这一事实标准的构建工具,可以实现跨平台的项目管理和自动化构建,有效管理多文件与第三方库依赖。本文以一份详

weixin_30338497的博客 527

cmake windows linux,在Windows中像Linux里一样使用CMake和make

1. 安装GCC环境1.1 安装MinGW(Minimalist GNU for Windows)首先下载MinGW,并安装。安装完成之后运行MinGW Installer。界面如下。勾选自己需要安装的包,然后点击Apply Changes执行。其中除了一些必须的包之外,mingw32-make是执行make命令需要。1.2 添加环境变量之后在系统环境变量的PATH中添加 MinGW\bin 这个...

weixin_36296444的博客 496

现代C++开发环境一键配置与实战指南:从VSCode到CMake

系统级编程语言是软件开发的基石,它通过编译器将高级代码转换为机器指令,实现对硬件资源的精细控制。其核心原理在于提供零成本抽象和直接内存管理能力,这使得开发者能够在性能敏感场景下最大化程序效率。这种技术价值体现在操作系统、游戏引擎、高频交易等对实时性和资源利用率要求极高的领域。在实际工程实践中,搭建一个高效的开发环境是首要挑战,涉及编译器配置、构建系统集成和依赖管理。本文聚焦于C++语言,通过集成VSCode、CMake和包管理器,提供一套从环境搭建到项目构建的完整解决方案,帮助开发者快速跨越入门门槛,应对智

weixin_33735077的博客 359

C++第三方库管理工具vcpkg使用教程

C++ 第三方库管理工具vcpkg使用教程

琅嬛福地 3万+

Windows C++开发环境高效配置指南:MSVC与MinGW双路径实践

C++作为高性能系统编程的核心语言,其开发效率高度依赖于本地工具链的配置。理解编译器、构建系统和包管理器的工作原理,是搭建高效开发环境的基础。通过合理组合这些工具,开发者可以构建出既能满足项目特定需求,又能提升编码体验的个性化工作流。在Windows平台上,这一过程尤为关键,因为其原生环境与常见的类Unix开发模式存在差异。本文聚焦于C++环境配置中的两个核心方案:一是基于微软原生MSVC编译器与VS Code编辑器的轻量高性能组合,特别适合Windows原生应用与游戏开发;二是利用MSYS2提供类Unix

weixin_34082854的博客 428

利用vcpkg实现C++项目跨平台迁移:从Windows到Linux/macOS的实战指南

在C++开发中,跨平台移植常因编译器差异、库依赖和系统API不统一而面临巨大挑战,这本质上是依赖管理和ABI兼容性问题。为解决这一痛点,以vcpkg为代表的跨平台C/C++包管理器应运而生,它通过从源码构建和三元组(Triplet)机制,确保库与项目在同一环境下编译,从根本上保证了二进制兼容性。其技术价值在于提供了标准化、可复现的依赖管理方案,并与CMake等构建系统深度集成,自动化处理头文件和库路径,极大提升了开发效率。在工程实践中,vcpkg尤其适用于需要将Windows原生项目迁移至Linux或mac

weixin_34406086的博客 834

k9s Kubernetes 终端管理完全指南:五步吃透集群排障与健康检查

k9s 是一款 Kubernetes 终端管理工具,如果你每天都要查集群,却仍得逐条回忆 kubectl 子命令、命名空间和容器名再拼起来,那么它值得花一小时装好。它把集群变成终端里可浏览的清单:点中任意 Pod 就能看日志、进容器、查描述。本文是一份快速指南,从 k9s 安装、日常高频操作、集群健康检查,一直讲到个性化定制与生产环境底线。 ## k9s 快速安装:brew、Docker 与源码

gitblog_00527的博客 952

别再手动编译Boost了!用vcpkg在VS2022和VSCode里一键搞定C++开发环境

本文详细介绍了如何使用vcpkg在VS2022和VSCode中一键配置Boost库,大幅提升C++开发效率。通过对比传统手动编译与vcpkg方案,展示了其在安装时间、磁盘占用和多版本支持等方面的显著优势,并提供了从安装到IDE集成的完整实战指南。

ahhli4007的博客 510

CMake工具基本使用及跨平台(Windows、Linux)安装yaml-cpp

适用于 Ubuntu / Debian / WSL / 其他常见 Linux 发行版。下载地址:https://git-scm.com/download/win。:DLL 文件确实存在,但 Windows 不会主动跨目录去找它。加入系统 PATH,否则运行 exe 时可能找不到 dll。若项目需要新特性(如 0.8+),建议使用源码编译。vcpkg 0.10 以后,旧 target。⚠️ apt 版本通常较旧(如 0.6.x),此时需要把dll文件放置到exe同级目录下。但是DLL 确实存在在。

qq_19797273的博客 1450

sentinel——SLC数据下载、DEM数据下载拼接、精密轨道数据下载方法

Sentinel——SLC数据下载、DEM数据下载、精密轨道数据下载方法 SLC数据下载 网址:https://search.asf.alaska.edu DEM数据下载 1 手动下载 http://srtm.csi.cgiar.org/srtmdata/ 3.在SARscape中使用下载好的DEM 将下载好的DEM放在软件默认下载DEM路径下(默认路径是C:\Users<用户名&g...

u011322358的博客 2万+

大麦网回流票监控实战:如何利用sign参数和cookie实现自动抢票(避坑指南)

本文详细介绍了如何利用sign参数和cookie构建大麦网回流票监控系统,实现自动化抢票。通过分析大麦网票务系统的核心机制、获取关键身份凭证、逆向分析sign签名算法,并构建完整的监控系统,帮助用户高效捕捉回流票机会。文章还提供了实战避坑指南和合法合规的注意事项,确保系统稳定运行且符合平台规则。

weixin_28568819的博客 413

VCPKG在Linux,windows,macos下的安装教程。

文章目录Vcpkg: 总览目录入门快速开始: Windows快速开始: Unix安装 Linux Developer Tools安装 macOS Developer Tools在 macOS 10.15 之前版本中安装 GCC在 CMake 中使用 vcpkgVisual Studio Code 中的 CMake ToolsVisual Studio CMake 工程中使用 vcpkgCLion 中使用 vcpkg将 vcpkg 作为一个子模块Tab补全/自动补全示例贡献者License数据收集 Vcpkg

性感的小君君 1万+

物联网技术-第2章-物联网技术架构

• 物联网具有很强的异构性• 为实现异构设备之间的互联、互通与互操作,物联网需要以一个开放的分层的可扩展的为框架。

m0_73804764的博客 2978

如何快速搭建Paozhu(炮竹)C++开发环境:Linux、Mac、Windows三平台CMake/xmake/vcpkg完整指南

Paozhu(炮竹🧨)是一款基于 **C++20** 的高性能 C++ Web 框架,原生支持 **HTTP/1 与 HTTP/2**,内置 ORM、WebSocket、HttpClient 等模块,让你用接近脚本语言的开发速度快速搭建 CRUD 类 Web 应用。本文将带你完整走完 **Paozhu C++ 开发环境搭建** 全流程:在 **Linux、macOS、Windows 三平台**

gitblog_01083的博客 485

论文理解【LLM-OR】—— 【PaMOP】Guiding Large Language Models in Modeling Optimization Problem

针对 LLM 求解运筹优化任务,PaMOP 通过约束划分树分离子问题,实现复杂优化问题的分块建模,并结合求解器反馈与反向翻译一致性检查迭代纠错,降低子任务复杂度,提升可执行率与建模准确性。

佚失的诗篇 1007

硬件工程师笔试面试高频考点汇总——(2025版)

《硬件工程师笔试面试知识汇总》一文系统梳理了硬件领域的核心知识体系,涵盖电子器件、模拟电路、数字电路等模块。文章详细解析了电阻、电容、电感等基础元件的选型与应用,深入探讨了三极管、MOS管等半导体器件的工作原理,并对比分析了DCDC与LDO等电源方案。在电路设计方面,提供了滤波器、放大器等实用电路的设计方法与仿真案例,同时包含UART、I2C等通信协议的实现要点。文章还整合了戴维宁定理等电路分析理论,并附有美团、联想等名企真题解析。通过器件特性、电路设计、企业真题三维度内容,为硬件工程师构建了完整的知识框架

XU157303764的博客 1万+

Windows下使用vcpkg一键部署ncnn:从环境配置到CMake集成全攻略

在C++项目开发中,依赖管理是提升工程效率的关键环节,尤其涉及OpenCV、Vulkan等复杂第三方库时。vcpkg作为跨平台C++包管理器,通过自动化源码编译、依赖解析和版本控制,从根本上解决了库部署的一致性问题。其技术价值在于将CMake配置、编译工具链集成和环境变量设置封装为统一流程,大幅降低深度学习框架的接入门槛。在模型部署场景中,结合ncnn这类轻量推理引擎,开发者可快速构建从图像处理到GPU加速的完整流水线。本文以vcpkg管理ncnn为例,详解如何通过特性开关启用Vulkan支持,并利用CMa

weixin_30681615的博客 329

基于英特尔 RealSense D455 相机实现裂缝尺寸以及深度测量

D455 相机可用于对这些零部件进行高精度的表面检测,快速准确地测量裂缝的尺寸和深度,实现自动化的质量控制和缺陷筛查,提高生产效率和产品质量。D455 相机能够对焊缝表面进行细致扫描,测量焊缝的宽度、深度以及焊缝表面的不规则程度等参数,帮助检测焊缝是否存在缺陷,如未焊透、焊瘤等,为焊接质量的评估和改进提供数据支持。:RGB 传感器采用全局快门,并且其视场与深度视场相匹配,能够提供更出色的 RGB 图像质量,以及深度图像和 RGB 图像之间的更好对应性,从而可提高扫描质量。可以看出宽度和高度都是十分准确的。

qq_53545309的博客 1715

C++ - 包管理工具/Vcpkg

C++跨平台包管理工具

dxf1971738522的博客 1443

Python爬虫实战:高效爬取Vimeo高清视频

在当今数字化时代,视频内容已成为互联网的重要组成部分。Vimeo作为一个高质量的视频分享平台,拥有大量优质视频资源。然而,Vimeo并未提供直接下载视频的选项,因此,我们需要借助Python爬虫技术来获取这些高清视频。(HTTP Live Streaming)格式存储。Vimeo的视频通常不会直接暴露。Vimeo的视频通常以。

2201_76125261的博客 432

【WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

WorkBuddy专栏14】专家不是「换皮」——角色切换、训练机制与自我进化深度拆解

AI人人懂 594
上一篇: 第十四届蓝桥杯大赛软件赛CB国赛-填空题(题目解析+完整代码)
下一篇: 使用soci库时,出现“#error “SOCI must be configured with C++11 support when using C++11“”的解决办法
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值