一、windows下安装vcpkg
使用git 克隆官方的 git 仓库:
git clone https://github.com/microsoft/vcpkg
使用 PowerShell 进入到仓库中,编译 vcpkg
cd vcpkg
./bootstrap-vcpkg.bat
vcpkg就编译完成啦!
二、使用vcpkg
-
查看vcpkg支持的开源库列表(使用 PowerShell 执行)
./vcpkg.exe search
-
安装一个开源库
查看支持编译的架构
./vcpkg.exe help triplet
如果要安装编译某一个架构的开源库,在需要安装的库后面指定相应的 triplet 即可。
例如编译安装 64 位 Windows 版本的 laszip使用下面命令即可。./vcpkg.exe install laszip:x64-windows
如果要安装的库依赖别的库,不用担心,vcpkg会进行依赖关系检查(比如编译 libcurl,会自动下载 zlib、openssl 进行编译)。
查看所有已经安装好的库
./vcpkg.exe list
-
移除一个已经安装的开源库
使用remove 指令即可。
比如我们要移除 laszip,那么执行如下命令:./vcpkg.exe remove laszip
注意:
这个时候只是移除了安装的二进制程序库而已,源码包和解压缩的源码并没有删除。
如果想要一键移除所有的“过时”的源码包,执行命令:./vcpkg.exe remove --outdated
-
更新已经安装的开源库
update 指令,可以显示可以升级的开源库的列表。 upgrade 的指令,会重新编译所有需要更新的包。./vcpkg.exe update 显示用于更新的包列表 ./vcpkg.exe upgrade 重新生成所有过期包
-
导出与导入
导出参数格式:–raw 以不打包的目录格式导出,–nuget 以 nuget 包形式导出,–zip 以 zip 压缩包形式导出,–7zip 以 7z 压缩包形式导出./vcpkg.exe export laszip:x64-windows --zip
默认导出在vcpkg目录下,如果要指定输出目录和特定文件名,需使用 “–output=” 参数。
导入就比较简单啦
./vcpkg.exe import laszip.zip
三、vcpkg和Visual Studio的集成
vcpkg 仅支持 Visual Studio 2015 update 3 及以上版本,目前 Vcpkg 编译静态库,默认只支持 MT 模式。
全局集成与移除
-
全局集成
适用于 Visual Studio 开发环境和 msbuild 命令行。执行命令:./vcpkg.exe integrate install
-
移除全局集成
./vcpkg.exe integrate remove
集成到某个工程
需要利用 Visual Studio 中的 nuget 插件来实现。vcpkg 默认编译链接的是动态库。
-
生成配置
执行命令:./vcpkg.exe integrate project
这时候会在 <vcpkg_dir> 目录下,生成 nuget 配置文件。其中 <vcpkg_dir> 是指 vcpkg 实际所在目录。
-
基本配置
用 Visual Studio 打开一个工程或解决方案。右键点击需要设置的工程,选择 “管理NuGet程序包”然后点击设置。
选择程序包源点击 “加号” 增加一个源。修改源的名字为 vcpkg。在“源”的选项中点击右侧的 “…” 选择 vcpkg 目录,然后点击右侧的“更新按钮”。点击 “确定”,关闭设置对话框。
到此,全局性的设置已经完成,以后不必再重复设置了。 -
工程配置
用 Visual Studio 打开一个工程或解决方案。右键点击需要设置的工程,选择 “管理NuGet程序包”。在右上角的 “程序包源” 中选择刚刚设置的 “vcpkg”。这样在 “浏览” 选项卡中就可以看到了,如下图所示。点击最右侧的 “安装”。这样就可以集成到某个工程了。
上面默认是动态库,若是在 Visual Studio 中集成静态库,需要用文本方式打开 vcxproj 工程文件。
在 xml 的段里面增加如下两句话即可:
<VcpkgTriplet>x64-windows-static</VcpkgTriplet>
<VcpkgEnabled>true</VcpkgEnabled>
四、集成到CMake
在 cmake 中集成只要在 cmake 文件中加入下面这句话即可(动态库)。
cmake .. -DCMAKE_TOOLCHAIN_FILE=<vcpkg_dir>/scripts/buildsystems/vcpkg.cmake
在 CMake 中集成静态库,需要额外指令:
cmake .. -DCMAKE_TOOLCHAIN_FILE=<vcpkg_dir>/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static