Tips for vcpkg
概述
vcpkg是微软开发的在Windows, Linux和MacOS平台管理C/C++库的开源工具。
快速开始
要求
使用vcpkg需满足如下条件:
- Windows 10, 8.1, 7, Linux, or MacOS
- Visual Studio 2017 or Visual Studio 2015 Update 3 (on Windows)
- Git
- CMake 3.10.2 (optional)
安装vcpkg
> git clone https://github.com/Microsoft/vcpkg
> cd vcpkg
PS> .\bootstrap-vcpkg.bat
Ubuntu:~/$ ./bootstrap-vcpkg.sh
为了让计算机的所有用户都可以使用vcpkg,运行如下命令(首次运行需管理员权限):
PS> .\vcpkg integrate install
Ubuntu:~/$ ./vcpkg integrate install
安装库
通过如下命令便可以安装库:
PS> .\vcpkg install sdl2 curl
Ubuntu:~/$ ./vcpkg install sdl2 curl
对于Windows
平台,vcpkg
默认安装32位库,如果想要设置为默认安装64位库,在环境变量中加上VCPKG_DEFAULT_TRIPLET=x64-windows
即可。
如果你在安装库时下载速度非常慢甚至下载失败,可以拷贝下载链接自行下载好库的压缩包,然后放在downloads
文件夹,这样vcpkg
便直接使用下载好的库来编译安装。
对于有些库,默认可能不是所有的依赖都安装,如ceres-solver,默认不支持suitesparse,cxsparse
,此时可以通过命令.\vcpkg install ceres[suitesparse,cxsparse]:x64-windows --recurse
重新安装,其中--recurse
表示可以卸载之前的库。更多install参数可以通过命令.\vcpkg help install
查看。
再比如支持cuda的opencv版本,可以通过命令.\vcpkg install opencv[cuda]:x64-windows
来安装。
卸载vcpkg
直接删除vcpkg的文件夹即可。
使用库
CMake
在CMake中使用通过vcpkg安装的库的最佳方式是通过工具链文件(toolchain file) scripts/buildsystems/vcpkg.cmake
,让安装的库通过find_package()
被发现。
要使用这个文件,只需通过命令-DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake
将其加入CMake命令行中即可。例如
cmake .. -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake (Linux/MacOS)
cmake .. -DCMAKE_TOOLCHAIN_FILE=vcpkg\scripts\buildsystems\vcpkg.cmake (Windows)
再比如,如果要用VS2017编译器,输入下面命令即可:
cmake .. -DCMAKE_TOOLCHAIN_FILE=D:\vcpkg\scripts\buildsystems\vcpkg.cmake -G "Visual Studio 15 2017 Win64"
还有一种方法,直接在CMakeLists.txt
文件中指定CMAKE_TOOLCHAIN_FILE
,即
set(CMAKE_TOOLCHAIN_FILE "D:\vcpkg\scripts\buildsystems\vcpkg.cmake")
project(PROJECT_NAME)
这里需要注意的是,设置CMAKE_TOOLCHAIN_FILE
要在project()
命令之前。另外多说一句,类似CMAKE_TOOLCHAIN_FILE
, CMAKE_SYSTEM_NAME
, CMAKE_C_COMPILER
等这些变量都要在project()
命令之前设定,不然CMake
仍然会按照默认的设置来。
VisualStudio
在VS中,所有已经安装的库都被VS项目自动包含(通过前面提到的vcpkg integrate install
命令实现),无需配置便可直接使用。
CLion
在CLion中的配置如下File -> Settings -> Build, Execution, Deployment -> CMake,在CMake Options中添加-DCMAKE_TOOLCHAIN_FILE=[vcpkg root]/scripts/buildsystems/vcpkg.cmake
vcpkg命令
vcpkg help
: 帮助vcpkg search
: 搜索库vcpkg install
: 安装库
对于Windows
平台.\vcpkg install openmesh:x86-windows
:安装32位库.\vcpkg install openmesh:x64-windows
:安装64位库.\vcpkg install openmesh:x64-windows-static
安装64位静态库
vcpkg list
:列出所有已经安装的库vcpkg upgrade
:列出所有可以升级的库,如果需要升级,需额外添加--no-dry-run
命令vcpkg update
vcpkg remove
:移除某个已经安装的库,如果需要移除依赖该库的其他库,添加--recurse
命令
vcpkg文件夹构成
- buildtrees -- contains subfolders of sources from which each library is built
- docs -- documentation and examples
- downloads -- cached copies of any downloaded tools or sources. vcpkg searches here first when you run the install command
- installed-- Contains the headers and binaries for each installed library. When you integrate with Visual Studio, you are essentially telling it add this folder to its search paths
- packages -- Internal folder for staging between installs
- ports -- Files that describe each library in the catalog, its version, and where to download it. You can add your own ports if needed
- scripts -- Scripts (cmake, powershell) used by vcpkg
- toolsrc -- C++ source code for vcpkg and related components
- triplets -- Contains the settings for each supported target platform (for example, x86-windows or x64-uwp)
更新vcpkg
在vcpkg根目录下的ports文件夹中可以看到当前版本包含的所有库,但由于vcpkg项目正在活跃开发中,有时候有些库在你当前的版本中并没有加入,这时可以考虑更新vcpkg。首先拉取vcpkg的远程仓库,更新本地仓库:
git fetch origin master:temp // 从远程的origin仓库的master分支下载到本地并新建一个分支temp
git diff temp // 比较本地的仓库和远程仓库的区别
git merge temp // 合并temp分支到master分支
git branch -d temp // 如果不想要temp分支了,可以删除此分支
然后重新编译生成vcpkg.exe工具
PS> .\bootstrap-vcpkg.bat
Linux:~/$ ./bootstrap-vcpkg.sh
然后可以通过命令.\vcpkg update
.\vcpkg upgrade
更新已经安装好的库。再通过install
命令安装新的库。
参考
- vcpkg-github
- vcpkg-docs
- Vcpkg: a tool to acquire and build C++ open source libraries on Windows
- CMAKE_TOOLCHAIN_FILE only recognized on command line
Tips for vcpkg的更多相关文章
- clion结合vcpkg以及GTest的使用
目录 一.vcpkg简介.下载和使用 1. vcpkg是什么 2. vcpkg下载 3. 使用vcpkg下载第三方库 二.clion结合vcpkg 1. 方法一:使用环境变量 2. 方法二:添加cma ...
- Mac上MySQL忘记root密码且没有权限的处理办法&workbench的一些tips (转)
忘记Root密码肿么办 Mac上安装MySQL就不多说了,去mysql的官网上下载最新的mysql包以及workbench,先安装哪个影响都不大.如果你是第一次安装,在mysql安装完成之后,会弹出来 ...
- 【Tips】史上最全H1B问题合辑——保持H1B身份终级篇
[Tips]史上最全H1B问题合辑——保持H1B身份终级篇 2015-04-10留学小助手留学小助手 留学小助手 微信号 liuxue_xiaozhushou 功能介绍 提供最真实全面的留学干货,帮您 ...
- layer.js中layer.tips
<script src="~/Content/js/layer/layer.js"></script> layer.tips('名称不能为空', '#pro ...
- HTML 最简单的tips 怎么支持指定DIV显示提示信息
<body> <style type="text/css"> a.link{position:relative;} a.link div.tips{ bor ...
- CSS:CSS使用Tips
Css是前端开发中效果展现的主要部分之一,良好的Css书写习惯可以为实际的项目开发提高效率,也可以为实现良好的团队合作提供保证. 一般新手在使用Css的时候经常会犯一些错误,出现一些不经意的漏洞,如果 ...
- 【读书笔记】100个Switf必备tips
声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 1.Selector 在Swi ...
- 【转】40个良好用户界面Tips
一个良好的用户界面应具有高转换率,并且易于使用.但要用户体验良好并不容易做到,下面我们整理了40个良好用户界面Tips,希望能对你有帮助! 1 尽量使用单列而不是多列布局 单列布局能够让对全局有更好的 ...
- 转:Eclipse Search Tips
from: https://github.com/ajermakovics/eclipse-instasearch/wiki/Eclipse-search-tips Eclipse Search T ...
随机推荐
- Selenium常用API的使用java语言之8-模拟鼠标操作
通过前面例子了解到,可以使用click()来模拟鼠标的单击操作,现在的Web产品中提供了更丰富的鼠标交互方式, 例如鼠标右击.双击.悬停.甚至是鼠标拖动等功能.在WebDriver中,将这些关于鼠标操 ...
- pycharm连接不上mysql数据库的解决办法
问题描述 环境:ubuntu18.04,mysql5.7 今天在ubuntu下使用pycharm连接mysql,发现连接不上 这不是缺少驱动吗?下载之! 下好之后点进去 连接 点击test conne ...
- TDOA 基础之 双曲线
TDOA 的算法基础就是时间差,根据时间差换算出距离差,后面的数学理论知识就是双曲线交点问题. 双曲线方程是2次方程,解算曲线交点也就是两个2次方程求解. 首先看双曲线定义(百度百科): 双曲线(Hy ...
- 搭建gitlab服务
安装依赖 sudo yum install curl policycoreutils openssh-server openssh-clients sudo systemctl enable sshd ...
- divisors 数学
divisors 数学 给定\(m\)个不同的正整数\(a_1, a_2,\cdots, a_m\),请对\(0\)到\(m\)每一个\(k\)计算,在区间\([1, n]\)里有多少正整数是\(a\ ...
- TensorFlow(十三):模型的保存与载入
一:保存 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist ...
- NetworkX系列教程(10)-算法之一:最短路径问题
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- 数据结构实验之图论六:村村通公路【Prim算法】(SDUT 3362)
题解:选点,选最小权的边,更新点权.可以手动自行找一遍怎么找到这个最小的生成树,随便选一个点放入我们选的集合中,然后看和这个点相连的点中,与那个点相连的那条边权值是最小的,选择之后,把相连的这个点一起 ...
- 传统PC机I/O位址空间范围
空间范围是0x000--0x3FF,有1024个I/O端口位址可供使用! 使用EISA或PCI等汇流排结构的现代PC机,有64KB的I/O位址空间可供使用.在普通Linux系统下透过查看/proc/i ...
- QTP安装出现windoes installer不能安装升级修补程序问题
问题如下: windoes installer不能安装升级修补程序问题 如何解决?还未找到解决方案