蝎子
vcpkg是一套跨平台,开源的C/C++库管理器,今天的这篇文章是有关vcpkg主题的2020年4月博文更新。在这篇文章中,我们将分享有关vcpkg 2020.04发布版本的一些信息以及vcpkg的路线图(roadmap),我们会在这里持续地发布有关vcpkg的最新消息。
vcpkg三月活动
首先我们想感谢所有vcpkg项目的贡献者们。在过去的三月份里,下面的所有人贡献了PR并被合并到项目的主分支中,这些贡献者中有微软的vcpkg核心开发团队成员,也有我们的合作伙伴Beyondsoft的团队成员。
目前我们总共有826名贡献者,非常感谢你们投入宝贵的时间来开发并完善一个更好的库管理工具。同时,我们非常期待着你也能加入到贡献者的队伍中来。
2020.04 发布更新
在四月份,我们发布了vcpkg 2020.04更新。这次的更新包含了一些文档内容的更新,一些产品上的优化改进,新增了5个新的库(我们称之为”ports”),以及对现有的69个ports的更新。
所有重大更新列表如下:
> vcpkg_from_git: 添加git over ssh功能。
> 安卓支持:导出到安卓Archive。
> Make configure meson sane and work for all targets。
> 添加新的策略:SKIP_ARCHITECTURE_CHECK。
> 首次添加iOS支持。
> 添加x-set-installed命令。
> 首次添加JSON支持。
下面列出的是5个新添加的代码库:
1. skyr-url (v1.5.1)
2. boringssl (v2020-04-07)
3. quadtree (v2020-04-13)
4. avisynthplus (v3.5.0)
5. c4core (v2020-04-12)
总的来说,我们目前在vcpkg主仓库目录中一共支持1322个代码库。如果根据编译配置(我们称之为”triplets”)来汇总,具体数量请参见下表:
vcpkg的路线图
接下来是我们对于vcpkg的路线图计划。我们将继续支持新的代码库并增加库在Linux和macOS上的数量,同时,我们会基于你的使用反馈和建议来添加新的产品特性。下面是我们计划添加的一些特性:
1. vcpkg将通过缓存来减少库在一台新机器上的安装时间。
目前,vcpkg会下载源代码到你的机器上并进行本机编译。这个过程可以生成一个匹配你所指定的编译配置的二进制文件,并和你的项目保持兼容性。但是有一些库需要以相同的方式编译到多台机器上。还有一些例子包含一套运行在多台编译服务器上的持续集成的设定,或者有多个开发者在他们自己的开发机上为同一个项目上工作。接下来,vcpkg将可以使你仅做一次本机编译并缓存生成的二进制输出到一个文件或者一个二进制文件宿主服务(例如,Azure Artifact Storage)。下一次在另一台机器上执行”vcpkg install”命名的时候,vcpkg将能够从缓存中下载预编译好的二进制文件,而不再需要执行另一次的本机编译。这个功能特性可以显著的节省时间,尤其是当你的项目是跨越多个编译服务器的大型项目的时候。
2. vcpkg安装的时候支持指定库的版本。
在默认情况下,vcpkg提供了一个大概有1300个库的目录,这些库在指定的快照环境下都经过了与其他库的兼容性测试.这意味着,你可以随意选择安装一个库而不用担心其版本冲突的问题,但这也限制了它的灵活性,因为你可能希望使用某个库的特定版本。我们相信,一个好的库管理器应该对高级用户具备足够的灵活性,我们将允许用户在库安装阶段指定一个特定的版本。如果你明白库的依赖性图表并愿意承担兼容性测试的责任,则你可以选择安装库的旧一点的版本,只要你愿意的话。你依旧可以在我们的目录中运行我们提供的测试项目,就算对于不同的库使用到了一些不同的版本,但是因为这其中海量的排列组合的可能性,我们也不能保证有100%的覆盖率。
3. vcpkg将会提供一个清单文件,这个文件可以用来指定所有的依赖,并且可以CheckIn到源码控制系统中。
这个想法非常直接:你可以在一个叫做vcpkg.json的文件中指明库的依赖项,版本以及从何处可以获取到这个依赖。这个文件可以成为你的源码仓库的一部分,并且vcpkg可以在你需要的时候读取这个文件并按需下载所有需要的东西。
4. vcpkg将会更容易的从多个源中安装代码库。
目前,vcpkg主要用来下载一些比较流行的开源代码库。在我们的目录中,已经有1300个库可用了,但是在企业环境中还有许多私有库和一些比较小的库没有在我们的目录中。想法是:提供一种可能性,可以在vcpkg中制定库的源地址,这样就可以下载它。通过这个方法,vcpkg可以管理你项目中的所有依赖,而不仅仅是开源代码库的部分。尽管在一开始开发团队可能需要针对他们的环境做一些设定,但从长远来看,这可以在项目环境搭建和持续集成阶段节省很多时间。
5. vcpkg将会随Visual Studio和Visual Studio Code一起发布。
在Visual Studio中,vcpkg将会包含在C++工作集中,而对于Visual Studio Code,它会被作为C++的一个扩展来发布。这两套开发环境都已经包含了一些对vcpkg的支持,我们将会持续改进开发环境的整合性。目标是,在你使用这些开发环境时,可以更加流畅的下载你需要的代码库。所以,我们需要做的第一步就是将库管理器集成到开发环境中,这样当你需要使用到它的时候,它就已经在那里了。
总结
vcpkg作为库管理器的后起之秀,在大微软开发队伍的努力工作下,假以时日,应该会成为其OneWindows生态系统中开发者这一侧不可或缺的角色。虽然我不怎么用,但还是祝:越办越好吧!