vcpkg是一个由微软开发的开源C/C++库包管理器,支持Windows、Linux和macOS操作系统。
功能:可以自动识别依赖,并进行编译、安装。
例如,libssh库依赖openssl、zlib等。自己编译需要先下载依赖的源码、编译、安装,然后再编译libssh,很麻烦。vcpkg可以自动解决这些问题。
关于vs2022自动识别vcpkg已经编译的包(即无需再配置include、lib等,直接#include)的功能,我没有测试成功,所以创建项目后还是老老实实配置。
0、一些教程和说明
vcpkg的基本使用 C++包管理 vcpkg 教程(基础) - 知乎
vcpkg目录里可以定时清理的文件夹:
downloads——下载的压缩包(自动下载的,或者网速太慢自己下载后放进去的)。压缩包有两种:
一种是工具类的(可执行程序如7zip.exe),会自动解压在downloads/tools里
一种是源码类的(就是要编译的程序源文件),会自动解压在buildtrees里(buildtrees/***/src/***.clean目录里)
buildtrees——要编译的源文件
packages——编译得到的各个库的文件,如bin、include、lib等
packages里是每个单独的库文件(各是各的)。可以从这里把编译好的捞出来,放到自己喜欢的地方。
installed 里是所有的库文件(全部混在一起),这也是最终的地方。
因此,vcpkg会越来越大,不建议装到C盘。
1、安装vcpkg
1.1 确认平台已经安装了编译器
Windows:MSVC(安装Visual Studio,自带MSVC编译器)
Linux:GCC(命令行gcc --version,出现版本则表明已安装)
macOS:Clang
1.2 Windows安装vcpkg
在想要安装的地方(建议D盘根目录),按Shift键+鼠标右键,在此处打开PowerShell窗口
git clone https://github.com/microsoft/vcpkg.git
执行脚本,会自动下载vcpkg.exe到D:/vcpkg中。注意clone下来的文件夹别动,否则使用时会有错误,不可以认为只需要vcpkg.exe就可以。
cd vcpkg
.\bootstrap-vcpkg.bat
添加进系统环境变量,以便终端识别vcpkg.exe。
1.3 Ubuntu安装vcpkg
自行deepseek,不再赘述了。
2、Windows编译安装libssh
终端中输入,注意默认安装x86版本,如需x64必须指定。
vcpkg install openssl:x64-windows
Downloading 如果很慢,自己根据链接下载压缩包,放到D:\vcpkg\downloads里,重新执行上述命令。
实战案例 cmake识别不到vcpkg安装的包的解决(以libssh为例) - 夕西行 - 博客园