VCPKG的2019.06个更新,现在可以在Windows、Linux和Mac上帮助你管理C和C++库。这是我们第一次创建 在我们的GitHub存储库上发布vcpkg . 此更新旨在为您带来一个月来vcpkg的新功能和改进的摘要。2019.06更新涵盖6月份。
此版本包括许多新端口和三元组更新,包括覆盖选项、端口贡献者的改进和新文档。有关此版本改进的完整列表,请查看我们的 GitHub发行说明 .
端口
在过去的几个月里,vcpkg的贡献有了很大的增长,现在目录中提供了1000多个包。通过在中搜索库名称,可以查看可用的库 GitHub repo ports文件夹 或者使用 vcpkg search命令 .
六月份我们新增了44个港口。一些值得注意的补充包括: bdwgc公司 , cJSON公司 , 最大的 , 伊默尔 , json-c格式 ,和 兹迪斯 . 这些端口在各自的GitHub repos上有1K+个星。您可以在[发行说明的新端口部分]()中查看新端口的完整列表。
除了新的端口,我们还更新了291个现有端口。该版本的显著更新包括 端口“主页” .
端口主页
作为我们基础设施工作的一部分,您现在可以查看某个港口的“主页”。这使您可以通过网站链接轻松查看港口的官方主页。以Abseil港为例。如果您导航到
覆盖端口
vcpkg命令行界面允许您轻松地搜索、安装和维护库。我们添加了- -overlay-ports
选项,允许您使用备用版本覆盖端口并创建专用端口。
让我们看一个例子,您正在使用OpenCV进行计算机视觉项目。您希望使用vcpkg获取OpenCV和其他软件包。您的团队专门使用OpenCV的3.0版本,但是vcpkg提供了3.4.3版本。即使该版本的OpenCV在vcpkg中不可用,您也可以创建一个专用端口。
假设您继续创建一个私有的GitHub repo,并签入要保留的端口,包括opencv3.0及其特定的依赖库,这些库在当前vcpkg中可能不可用。然后,您可以向您的团队提供克隆您的私有回购的链接。
在本地创建自定义端口目录并提交更改:
~/vcpkg$ mkdir vcpkg-custom-ports ~/vcpkg$ cd vcpkg-custom-ports ~/vcpkg/vcpkg-custom-ports$ git init ~/vcpkg/vcpkg-custom-ports$ cp -r %VCPKG_ROOT%/ports/opencv . ~/vcpkg/vcpkg-custom-ports$ git add . ~/vcpkg/vcpkg-custom-ports$ git commit -m "[opencv] Add OpenCV 3.0 port" ~/vcpkg/vcpkg-custom-ports$ git remote add origin https://github.com/<My GitHub username>/vcpkg-custom-ports.git ~/vcpkg/vcpkg-custom-ports$ git push -u origin master
现在,您和您的团队可以使用OpenCV的3.0版本,通过以下方式将您的项目与vcpkg结合使用:
~/vcpkg/vcpkg-custom-ports$ git clone https://github.com/<My GitHub username>/vcpkg-custom-ports.git ~/vcpkg/vcpkg-custom-ports$ ./vcpkg update --overlay-ports=./vcpkg-custom-ports ~/vcpkg/vcpkg-custom-ports$ ./vcpkg upgrade --no-dry-run --overlay-ports=./vcpkg-custom-ports
请注意,您可能需要更新vcpkg以使用最新的命令行选项。您可以在Windows上通过 .ootstrap-vcpkg.bat
或通过 ./bootstrap-vcpkg.sh
.
这允许您升级软件包并保留项目所需的旧版本的OpenCV。
如上面的示例所示,您可以使用 --overlay-ports
与 vcpkg install
, vcpkg update
, vcpkg upgrade
, vcpkg export
,和 vcpkg depend-info
命令。在我们的 覆盖端口文档 .
请注意,虽然覆盖端口可以帮助覆盖端口版本和创建专用端口,但这是我们不断改进vcpkg版本控制可用性的工作的一部分。请继续关注未来关于vcpkg版本控制最佳实践的文章!
三胞胎
默认情况下,Vcpkg提供许多三元组(目标环境)。上个月,我们集中精力增加Linux上可用的端口数量,并为Linux和Windows Linux子系统(WSL)创建端口改进。我们现在有823个可用于Linux的端口,并为Linux和WSL更新了150多个端口。
以下是每个三元组端口的当前列表:
三胞胎 | 可用端口 |
x64 osx系列 | 755 |
x64 linux系统 | 823 |
x64窗口 | 1006 |
x86窗口 | 977 |
x64 windows静态 | 895 |
arm64窗口 | 654 |
x64超宽带 | 532 |
arm超宽带 | 504 |
没看到你想要的三胞胎吗?你可以很容易地添加自己的三胞胎。有关添加三胞胎的详细信息,请参阅我们的 文档 .
重叠三胞胎
作为vcpkg命令行更新的一部分,我们还添加了 --overlay-triplets
选项。如果您有定制的三元组需要,此选项特别有用。您可以使用选项,类似于 --overlay-ports
,以使用自定义规范重写三胞胎并创建自定义三胞胎。
例如,一部分Linux用户需要完全动态的库,而x64linux三元组只构建静态库。基于 x64 linux三元组 可以创建来构建动态库。要解决此问题:
首先,创建一个包含自定义三胞胎的文件夹:
~/vcpkg$ mkdir ../custom-triplets
然后,创建自定义三元组文件:
~/vcpkg$ cp ./triplets/x64-linux.cmake ../custom-triplets/x64-linux-dynamic.cmake
并将自定义triplets/x64-linux-dynamic.cmake文件修改为:
set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE dynamic) set(VCPKG_CMAKE_SYSTEM_NAME Linux)
* 请注意 VCPKGu库u链接从静态到动态。
最后,通过传递 --overlay-triplets
选项:
~/vcpkg$ vcpkg install opencv:x64-linux-dynamic --overlay-triplets=../custom-triplets
对端口贡献者的改进
我们还对vcpkg基础设施进行了改进,包括公共CI系统、检查功能和端口的“主页”字段。
客户智能系统
我们现在已经通过azuredevops管道进行了公共CI测试,这些管道为vcpkggithub repo的所有pr运行。CI系统允许贡献者在几分钟内直接、自动地访问Linux、Windows和Mac上PRs的故障日志。例如:
支票上仍会有徽章表明 通过/失败,如“x”或“复选标记”所示。
如果检查失败,您现在可以深入了解详细信息:
进一步进入Azure DevOps,您可以在摘要选项卡中获得更多信息,例如下载所有故障日志的zip文件以及相关更改的快速描述:
我们希望新的CI系统能改善您向vcpkg提交PRs的体验!
检查功能
Vcpkg_check_features
是一个新的portfile函数,用于检查一个或多个功能是否是包安装的一部分。在vcpkg中,我们使用特性来启用库提供的可选功能。用户请求安装vcpkg。例如:
~/vcpkg$ vcpkg install opencv[cuda]
install命令启用对OpenCV的可选CUDA支持。
Vcpkg_check_features
通过缩短CMake portfile脚本中所需的语法,简化了vcpkg贡献者的portfile创建过程。以前,您需要指定端口中包括哪些功能:
if(<feature> IN_LIST FEATURES) set(<var> ON)else() set(<var> OFF) endif()
现在,您可以简单地编写以下内容:
vcpkg_check_features(<feature> <output_variable>)
了解有关使用的更多信息 vcpkg_check_features
在您的端口文件中 vcpkg_check_features
文档 .
端口的“主页”字段
我们还为控件添加了一个可选的“Homepage”字段。这意味着控制文件现在可能包含一个“主页”字段,链接到港口的官方网站。主页字段旨在帮助您更轻松地找到您正在使用的端口的来源/位置。
文档
我们还更新了文档以反映这些新变化。请查看以下新文档,了解有关本文中概述的一些更新以及其他几个方面的更多信息:
谢谢你
感谢所有创建vcpkg的人!我们现在总共有639个贡献者。在此版本中,我们要感谢6月份对代码进行了更改的24位贡献者:
塞尼特 | 马丁尼 |
科里安 | 马丁-s |
驱动器1998 | 姆洛斯科特 |
企业会计准则197 | myd7349 |
埃夫波布 | 纽曼-A |
法韦科斯 | 过期 |
香港航空公司 | 普拉维奇 |
贾斯旺 | 超级假发 |
约苏戈麦斯 | 塔奇拉 |
跳伞 | 鞑靼喇嘛 |
勒布朗 | 塔德豪斯 |
马尔基安霍兰德 | 安南约文 |
告诉我们你的想法
安装vcpkg ,试一试,让我们知道你的想法。如果您遇到任何问题,或有任何建议,请及时报告 GitHub存储库的问题部分 .
我们可以通过下面的评论或电子邮件联系我们(vcpkg@microsoft.com). 你也可以在Twitter上找到我们的团队和我 @视觉 和 @塔拉穆斯福特 .