Share via


Vcpkg:引入导出命令

 

[原文发表地址] Vcpkg: 引入导出命令

[原文发表时间] 2017/5/12

Vcpkg 帮助你在Windows上获取和构建开源库。自2016年9月以来,开发人员在vcpkg目录里添加了超过200个类库并且积极地投入到代码本身。Vcpkg现在支持Visual Studio2015 和Visual Studio 2017 并且可以定向到动态或静态库和平台,像x64、x86或UWP。

今天我们很高兴地宣布一条新的命令:vcpkg 导出。正如您在我们最近的调查中说得那样,需要一个能够导出用vcpkg构建的二进制代码的命令。这个新命令的目的是允许您与其他想要在他们自己的项目里使用这些文件的开发者分享和重新分配用vcpkg生成的二进制代码。比如,负责企业第三方类库购置的团队可以直接使用vcpkg生成企业项目使用的一组常用的类库二进制代码,然后可以使用vcpkg导出并且与内部开发人员分享这些二进制代码(包括.h、.lib和所有针对这些类库构建的所需要的东西)。

新命令的语法规则是:

vcpkg export <pkg1> <pkg2> … -- [options]

你可以有多种导出格式的选项:

  • -zip
  • -7zip
  • -nuget
  • -raw(未压缩的文件)

当你指定一个要导出某个包时,其所有的依赖项都会包括在导出文档中。这意味着导出的包可以独立存在 ---不需要额外的依赖项。

下面是一些vcpkg导出的演示实例:

  1. 导出到nuget

> vcpkg export cpprestsdk zlib --nuget

The following packages are already built and will be

exported:

* boost:x86-windows

* bzip2:x86-windows

cpprestsdk:x86-windows

* openssl:x86-windows

* websocketpp:x86-windows

zlib:x86-windows

Additional packages (*) need to be exported to complete

this operation.

Exporting package zlib:x86-windows...

Exporting package zlib:x86-windows... done

Exporting package openssl:x86-windows...

Exporting package openssl:x86-windows... done

Exporting package bzip2:x86-windows...

Exporting package bzip2:x86-windows... done

Exporting package boost:x86-windows...

Exporting package boost:x86-windows... done

Exporting package websocketpp:x86-windows...

Exporting package websocketpp:x86-windows... done

Exporting package cpprestsdk:x86-windows...

Exporting package cpprestsdk:x86-windows... done

Creating nuget package...

Creating nuget package... done

NuGet package exported at: E:/workspace/vcpkg/vcpkg-export-

20170502-150917.nupkg

With a project open, go to Tools->NuGet Package

Manager->Package Manager Console and paste:

Install-Package vcpkg-export-20170502-150917 -Source

"E:\workspace\vcpkg"

2. 导出到7zip和zip

> vcpkg export zlib --7zip --zip

The following packages are already built and will

be exported:

zlib:x86-windows

Exporting package zlib:x86-windows...

Exporting package zlib:x86-windows... done

Creating zip archive...

Creating zip archive... done

Zip archive exported at: E:/workspace/vcpkg /vcpkg-export-

20170502-161923.zip

To use the exported libraries in CMake projects use:

"-

DCMAKE_TOOLCHAIN_FILE=[...]/scripts/buildsystems/vcpkg.cmak

e"

Creating 7zip archive...

Creating 7zip archive... done

7zip archive exported at: E:/workspace/vcpkg/vcpkg-export-

20170502-161923.7z

To use the exported libraries in CMake projects use:

"-

DCMAKE_TOOLCHAIN_FILE=[...]/scripts/buildsystems/vcpkg.cmak

e"

3. 导出多个架构的多个库

你可以在相同的导出文件中导出多个类库和同一个类库的多个架构。

> vcpkg export gtest zlib gtest:x64-windows zlib:x64-

windows --nuget

The following packages are already built and will be

exported:

gtest:x86-windows

gtest:x64-windows

zlib:x86-windows

zlib:x64-windows

Exporting package zlib:x86-windows...

Exporting package zlib:x86-windows... done

Exporting package zlib:x64-windows...

Exporting package zlib:x64-windows... done

Exporting package gtest:x86-windows...

Exporting package gtest:x86-windows... done

Exporting package gtest:x64-windows...

Exporting package gtest:x64-windows... done

Creating nuget package...

Creating nuget package... done

NuGet package exported at: E:/workspace/vcpkg/vcpkg-export-

20170502-150917.nupkg

With a project open, go to Tools->NuGet Package

Manager->Package Manager Console and paste:

Install-Package vcpkg-export-20170502-150917 -Source

"E:\workspace\vcpkg"

使用导出的二进制

  1. 为了使用你创建的这些用vcpkg命令导出到Visual Studio 工程中的这些二进制编码,请使用vcpkg 导出----nuget 选项, 然后将.nuget添加到工程中作为其他nuget包添加到你的工程中。其他导出选项(-zip、-7zip、-raw)包含必要的.targets文件,用于在更高级的场景里进行MSBuild合成,详见目录scripts\buildsystems\msbuild\。
  2.  Cmake

从vcpkg导出时包含CMake工具链文件。它在scripts\buildsystems\中。要使用它,需要在调用CMake时指定CMAKE_TOOLCHAIN_FILE变量:

<cmake .. "-

DCMAKE_TOOLCHAIN_FILE=E:/workspace/vcpkg/vcpkg-export

-20170502-161923/scripts/buildsystems/vcpkg.cmake"

告诉我们您的想法

和往常一样,我们真的希望这个工程能够成为你的工具。如果你需要其他的导出格式,可以通过在GitHub上创建一个问题或者提供代码本身让我们知道!

与此同时,我们已经验证了vcpkg目录下使用在vs2017 中的所有的库文件,所以如果在更新时遇到问题,请告诉我们!我们希望您能使用Vcpkg把工程迁移到Visual Studio 2017。