Windows 下 c/c++ 第三方包管理器: vcpkg

(一) 为什么要用 vcpkg: 
Windows下开发C/C++程序,少不了编译开源的第三方库, 比如用于网络连接的高性能库libcurl、用于压缩解压的zlib等等。
使用这些库开发极大的方便了程序员,使得我们不必重复造轮子。但是使用这些库必须要处理N多问题: 由于这些开源库绝大部分都来源于Linux系统,导致其工程文件、编译系统都使用gnu系列工具,使得将其移植到Windows的VC开发环境下一直是难点。尽管最近几年很多开源库都支持了跨平台的cmake,但是编译过程仍然复杂和多样化。


(二) vcpkg的优点

  • 自动下载开源库源代码
  • 源码包的缓存管理和版本管理,可以升级版本
  • 轻松编译
  • 依赖关系检查(比如编译libcurl,会自动下载zlib、openssl进行编译)
  • 无缝集成Visual Studio,不需要设置库文件、头文件的所在目录,自动集成。
  • Visual Studio全平台支持,不仅支持Debug/Release、x86/x64编译,还支持UWP、ARM平台的编译
git clone https://github.com/microsoft/vcpkg  #获取
cd vcpkg
bootstrap-vcpkg.bat  # 编译好后会在同级目录下生成vcpkg.exe文件。编译期间,脚本会自动下载vswhere组件

.\vcpkg.exe search             #查询可用的第三方库(列表)
.\vcpkg.exe integrate install  #集成到全局
.\vcpkg.exe integrate remove   #移除全局集成

.\vcpkg.exe integrate project   #集成到工程, 会在“\scripts\buildsystems”目录下,生成nuget配置文件.

.\vcpkg.exe install opencv[cuda,contrib]:x64-windows  #或者下面
.\vcpkg.exe install xxx --triplet x64-windows

.\vcpkg.exe remove xxx

#同事间可导出/导入
.\vcpkg.exe export xxx --7zip
.\vcpkg.exe import xxx.7z

# --raw    以不打包的目录格式导出
# --nuget  以nuget包形式导出
# --ifw    
# --zip    以zip压缩包形式导出
# --7zip   以7z压缩包形式导出

vcpkg默认安装32位的包,为了让它安装64位的包,可以添加系统环境变量:
VCPKG_DEFAULT_TRIPLET=x64-windows

解决vcpkg下载缓慢的问题

https://blog.csdn.net/qq_39690181/article/details/82910610

 

vcpkg 体积太大问题

清空 vcpkg下的 buildtrees 这个文件夹

 

在cmake文件中加入

-DCMAKE_TOOLCHAIN_FILE=/scripts/buildsystems/vcpkg.cmake


(二) Vcpkg的缺点

  1. 有些包或有些包的某些环境,质量太低,之前我经历过有些包安装了好几个小时之后编译失败,或者运行时报错,那是非常非常不爽
  2. 包能安装的环境配置,是通过cmake代码来完成,这样就可以尽早的从配置不支持中报错返回而不是等几个小时编译后才失败
  3. 社区互动。现在知道vcpkg的少,用vcpkg的人更不多,微软的维护者也跟我说最希望在vcpkg中看到的就是社区互动,希望大家关注vcpkg,试试vcpkg,说说它的好与不好。
  4. CI(持续集成),也是为了提高质量。现在vcpkg后台有一定的CI,但远远不够。现在的CI主要跑了一些安装之类的流程,但没有具体与跑每一个包下的每一个配置。这就导致如果包之类有显式或潜在的依赖,改了一个包就可能让另一个包炸了,这也是可以提升的地方,微软的维护者也说在working on it.
     

 

============ 参考 ==============

Achilles:    [Visual Studio开源库集成器Vcpkg全教程]

知乎大v:     [如何看待 Windows 的 C++ 包管理器 vcpkg?]

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装第三方时出现"SyntaxError: invalid syntax"错误通常是由于使用了错误的语法或语法错误导致的。可能的原因有以下几点: 1. 版本不匹配:请确保你使用的库与你的Python版本兼容。某些库可能只适用于特定的Python版本。 2. 安装方式不正确:确保你使用正确的命令来安装第三方库。通常使用pip来安装库,示例命令为"pip install packagename"。 3. 环境配置问题:有时候,需要先在系统或虚拟环境中正确配置Python环境。请检查你的环境配置是否正确。 4. 编码问题:请确保你的代码文件的编码格式与Python解释器一致。常见的编码格式是UTF-8。 如果你遇到"SyntaxError: invalid syntax"错误,请按照以下步骤进行排查和解决: 1. 检查你的代码:仔细检查你的代码,看是否存在语法错误、拼写错误或其他错误。确保你的代码符合Python语法规范。 2. 检查Python版本:确认你使用的Python版本与第三方库要求的版本匹配。可以使用命令"python --version"来检查你的Python版本。 3. 检查安装方式:确认你使用了正确的命令来安装第三方库。如果是使用pip来安装,请确保pip已经正确安装,并且你正在使用正确的pip命令。 4. 检查环境配置:检查你的Python环境配置是否正确。你可能需要设置正确的Python路径或者创建一个虚拟环境来安装第三方库。 5. 检查编码格式:确保你的代码文件的编码格式与Python解释器一致。可以在代码文件的开头添加一行注释来指定编码格式,例如"#!/usr/bin/env python # -*- coding: utf-8 -*-"。 如果以上方法都没有解决问题,你可以参考引用、和中提供的链接,其中含了更多关于"SyntaxError: invalid syntax"错误的解决方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [关于“pip install ##”报错“SyntaxError: invalid syntax”等问题及解决方案](https://blog.csdn.net/qq_43210428/article/details/114667452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [pip安装python工具,出现SyntaxError: invalid syntax或者NameError: name ‘pip‘ is not defined错误](https://blog.csdn.net/qq_45064049/article/details/119649142)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Python27_ezsetup_pip.zip](https://download.csdn.net/download/qq_37970770/12719657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值