vcpkg-VC++打包工具

1. 介绍

  VCPKG,是VC++ Packaging Tool。 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目包管理工具,可以帮助您在 Windows 平台上获取 C 和 C++ 库.通过它能够方便的安装常用的 C/C++ 库,而且提供了 CMake 的集成。这使得使用 CMake 的项目在 Windows 下构建方便了很多,不需要自己手动去指定在 Windows 下如何找到依赖的库了。

  vcpkg 自身也是使用 C++ 开发的 (而其他的 C++ 包管理大多并不是 C++ 开发的),并且 vcpkg 能够帮助用户在 Visual Studio 中,更好的使用这些安装好的库.

  不过实际使用中还是碰到一些问题。为了减少依赖,直接复制一个可执行程序就能在其它机器上运行,经常会需要静态链接依赖的库。而在 Windows 上使用 vcpkg 静态链接需要一些特殊的操作。

  vcpkg 整合了 git,构建系统整合的 CMake,而绝大多数的 C++ 项目都可以直接或者间接的方式使用 CMake创建原生项目文件并构建.

vcpkg遵循一下原则:

  • 开放源码

  • 无需安装

  • 支持重发构建

  • 自定义生成

  • 社区参与贡献

  • 端口集成(与 BSD Ports 机制类似)

  vcpkg是命令行包管理工具,在使用第三方库的c或c++开发中可以简化相关的配置操作

  vcpkg安装的包支持vs2015和vs2017工具集,目前在windows平台已有超过900多个包,linux平台超过350个包。在默认情况下,vcpkg会优先使用vs2017进行编译。如果未安装,则使用vs2015编译和安装。使用vcpkg对于c或c++开发,令人烦恼的第三方包管理工作大大的减轻,实则是“居家旅行,必备之品”。

  vcpkg支持众多架构:

arm-uwp, arm-windows, arm64-uwp, arm64-windows,

x64-linux, x64-osx, x64-uwp, x64-windows, x64-windows-static,

x86-uwp, x86-windows, x86-windows-static。 

2. vcpkg的常用操作:

  1. # 下载vcpkg项目
  2. git clone https://github.com/Microsoft/vcpkg
  3.  
  4. # 本地编译
  5. bootstrap-vcpkg.bat
  6.  
  7. # 搜索想要安装的包
  8. vcpkg search curl
  9.  
  10. # 安装指定的包,curl包分号后面的表示架构,可用的值为之前列出的那些。
  11. vcpkg install curl:x64-windows
  12.  
  13. # 列出已经安装的包
  14. vcpkg list
  15.  
  16. # 已安装的包更新
  17. vcpkg upgrade
  18.  
  19. # 删除已安装的包
  20. vcpkg remove curl:x64-windows

3. 简单使用

  依赖要求:

使用vcpkg, 要提前保证系统各种有以下:

  • Windows 10, 8.1, 7, Linux, or MacOS
  • Visual Studio 2017 or Visual Studio 2015 Update 3 (on Windows)
  • Git
  • Optional: CMake 3.10.2

  (1)将git.exe 路径防止在系统的path变量中。

  (2)克隆vcpkg仓库

  1.  git clone https://github.com/Microsoft/vcpkg.git

  然后运行:

  1. C:\src\>cd vcpkg
  2.  
  3. C:\src\vcpkg>.\bootstrap-vcpkg.bat

  (3)切换到源代码路径,执行构造

  1. powershell -exec bypass scripts\bootstrap.ps1

  (4)设定user-wide整合(初次执行需要管理员权限)

  然后,运行如下命令使计算机的所有用户都可以使用vcpkg (备注:需要管理员权限)

  1. vcpkg.exe integrate install

  或者如下执行:

  1. PS D:\vcpkg> .\vcpkg integrate install
  2. Applied user-wide integration for this vcpkg root.
  3.  
  4. All MSBuild C++ projects can now #include any installed libraries.
  5. Linking will be handled automatically.
  6. Installing new libraries will make them instantly available.
  7.  
  8. CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake"

  (5)安装库

  使用vcpkg安装任何的程序包:   C:\src\vcpkg> .\vcpkginstall sdl2 curl

  1. vcpkg.exe install sqlite3 boost

  (6)最后,后,在Visual Studio 2015 or Visual Studio 2017中新建工程,只需要 #include 对应的头文件即可使用。

特点:

(1)免配置
  无需配置include、library路径,无需配置library依赖,自动识别win32/x64

(2)自动复制依赖

  如果依赖于某个library,则运行/打包时需要复制dll到对应路径,而Vcpkg会自动完成这一步骤

3. 简单实例,如何安装sqlite步骤

(1)查询sqlit的名称

  1. vcpkg.exe search sqlite
  2. libodb-sqlite 2.4. Sqlite support for the ODB ORM library
  3. sqlite3 3.15. SQLite is a software library that implements a se...
  4.  
  5. If your library is not listed, please open an issue at:
  6. https://github.com/Microsoft/vcpkg/issues

(2)安装sqlite3

  1. vcpkg.exe install sqlite3

(3)确认是否安装成功

  1. vcpkg.exe list

4. 指定特定版本的SQlit库

  安装64位版本

  1. vcpkg.exe install sqlite3:x64-windows

6. 使用 sqlit

(1) 打开Visual Studio 2015 新建工程,main.cpp如下

  1. #include <sqlite3.h>
  2. #include <stdio.h>
  3.  
  4. int main(int argc,char** argv)
  5. {
  6. printf("%s\n",sqlite3_libversion()):
  7. return ;
  8. }

(2)编译运行

    • 是否支持Visual Studio 2010 ?
      否,后续我会介绍Vcpkg用到的“知识点”,可以为Visual Studio 2010开发相应工具提供借鉴。

    • 是否支持静态编译库
      是,例如vcpkg.exe install xxx:x86-windows-static

    • 没有我需要的库怎么办
      自己写

endl;

vcpkg-微软开发的VC++打包工具的更多相关文章

  1. vcpkg —— VC++ 打包工具

    引用: http://www.tuicool.com/articles/aeiYz2v vcpkg 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目包管理工具,可以帮助您在 W ...

  2. win10 + vs2017 + vcpkg —— VC++ 打包工具

    vcpkg 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目包管理工具,可以帮助您在 Windows 平台上获取 C 和 C++ 库. vcpkg 自身也是使用 C++ 开发的 ...

  3. 原创全新打包工具Parcel零配置VueJS开发脚手架

    parcel-vue 一个基于Parcel打包工具的 VueJS急速开发脚手架解决方案,强烈建议使用node8.0以上 项目地址: https://github.com/w3c-king/p... 初 ...

  4. 微软自带打包工具 InstallShield 的使用

    1.下载并安装  InstallShield InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)   Ins ...

  5. 使用clion+cmake+vcpkg的开发现代的c++跨平台程序

    使用clion+cmake+vcpkg的开发现代的c++跨平台程序 使用c++开发跨平台的程序 背景 在开发过程中,使用c++作为开发语言,通常被认为是痛苦的,啰嗦的,超长开发时间的.最近几年有各种各 ...

  6. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  7. Webpack:前端资源模块化管理和打包工具

    一.介绍: Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生 产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等到实际需要的时候再 ...

  8. Xamarin Mono For Android 4.6.07004 完整离线安装破解版(C#开发Android、IOS工具)

      Xamarin是由Miguel de Icaza成立的一家新的独立公司,目的是给Mono一个继续奋斗的机会.Mono for Android (原名:MonoDroid)可以让开发人员使用 Mic ...

  9. 【Cocos2d-Js基础教学(5)资源打包工具的使用及资源的异步加载处理】

    TexturePacker是纹理资源打包工具,支持Cocos2dx的游戏资源打包. 如果用过的同学可以直接看下面的资源的异步加载处理 首先为什么用TexturePacker? 1,节省图片资源实际大小 ...

随机推荐

  1. nginx默认配置和默认站点启动

    1.nginx的配置文件nginx.conf cd /etc/nginx/ vim nginx.conf 打开后的文件为: user nginx;worker_processes 1; error_l ...

  2. 使用vim编程步骤

    先用vim 名字.cpp //创建一个.cpp文件进行代码编写 可以调用g++ 名字.cpp的形式进行编译,更好的方法是采用CMakeLists.txt touch CMakeLists.txt // ...

  3. 04. pt-deadlock-logger

    死锁:是指两个或则多个事务在同一个资源上相互占用,并请求锁定对方占用的资源,而导致恶性循环的现象:当产生死锁的时候,MySQL会回滚一个小事务的SQL,确保另一个完成.上面是死锁的概念,而在MySQL ...

  4. POJ 3469.Dual Core CPU 最大流dinic算法模板

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 24830   Accepted: 10756 ...

  5. Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils

    Spring 注解(二)注解工具类 AnnotationUtils 和 AnnotatedElementUtils Spring 系列目录(https://www.cnblogs.com/binary ...

  6. Tomcat+Redis+Nginx实现session共享(Windows版)

    redis安装:xx nginx安装:xx 步骤: 1.下载tomcat-redis-session-manager相应的jar包,主要有三个: wget https://github.com/dow ...

  7. 分布式版本控制工具:git与Mercurial(zz)

    分布式版本控制工具:git与Mercurial [收藏此页] [打印]   作者:cyfdecyf  2007-12-26 内容导航: 第1页   [IT168 技术文档]    说到版本控制工具,很 ...

  8. 【搜索】Shuffle'm Up

    运用第i个s12和第i+1个s12中,每个位置具有的确定的映射关系: pos = pos * 2 + 1 (pos < c) pos = pos * 2 - c * 2 (pos >= c ...

  9. 旅行家的预算(NOIP1999&水题测试2017082301)

    题目链接:旅行家的预算 这题还可以,不算太水. 这题贪心即可. 我们采取如下动作: 如果在装满油的情况下能到达的范围内,没有加油站,则无解. 如果在装满油的情况下能到达的范围内,油价最低的加油站的油价 ...

  10. ssh 常用命令

    1.复制SSH密钥到目标主机,开启无密码SSH登录 ssh-copy-id user@host 如果还没有密钥,请使用ssh-keygen命令生成. 2.从某主机的80端口开启到本地主机2001端口的 ...