vcpkg是一个自动管理开源库的工具,你可以把它想像成Ubuntu的apt-get软件包。
- 自动下载开源软件包
- 软件包可以升级版本或补丁包
- 自动编译软件包
- 软件包依赖的包自动检查下载编译
- 可集成至Visual Studio,你只需要引用头文件即可。vs自动引用库文件(编译后vs会自动将库文件(dll/so/a)复制项目运行目录)。
1.1 安装vcpkg
cd E:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
#vcpkg将安装至E:\vcpkg
安装成功后将E:\vcpkg设置至环境变量PATH
1.1.1 设置默认安装的平台
–triplet=x64-windows表示仅在windows上安装64位软件包
使用下列命令查看软件包支持的平台
vcpkg help triplet
现代软件基本上64位编译的,为节约磁盘空间,可以为–triplet设置系统环境变量“VCPKG_DEFAULT_TRIPLET=x64-windows”,表示默认安装在windows上安装64位软件包。
1.1.2 可选步骤,将vcpkg与Visual Studio配合使用(需要管理员权限)
vcpkg integrate install #安装至Visual Studio
vcpkg integrate remove #从Visual Studio卸载
1.1.3 软件包升级
cd E:\vcpkg
git pull
vcpkg update
vcpkg upgrade --no-dry-run
1.1.4 查找安装软件包
vcpkg search PackageName
1.1.5 安装软件包
vcpkg install PackageName --triplet=x64-windows
#如果你设置了VCPKG_DEFAULT_TRIPLET系统环境变量则
vcpkg install PackageName
1.1.6 移除软件包
vcpkg remove PackageName
移除所有过时的软件包
vcpkg remove --outdated
1.1.7 列出已安装的软件包
vcpkg list
1.1.8 集成到CMake
在cmake后添加CMAKE_TOOLCHAIN_FILE变量,值为vcpkg.cmake完整路径
cmake -DCMAKE_TOOLCHAIN_FILE=E:/vcpkg/scripts/buildsystems/vcpkg.cmake -Wno-dev
#-Wno-dev:【可选】抑制开发人员警告。 禁止对CMakeLists.txt文件的作者发出警告。
1.1.9 为vcpkg瘦身
当你使用了段时间后,vcpkg占用了非常大的磁盘空间,这时您可以通过删除packages、buildtrees和downloads文件夹来节省一些磁盘空间。
rmdir /S /Q E:\vcpkg\packages
rmdir /S /Q E:\vcpkg\buildtrees
rmdir /S /Q E:\vcpkg\downloads
vcpkg目录说明
buildtrees: 【允许删除】编译软件包使用的目录
docs: 【不能修改删除】文档和示例
downloads: 【允许删除】所有已下载的工具或源的缓存副本。 运行安装命令时,vcpkg 会首先搜索此处,如果没有会自动下载
installed: 软件包编译后的安装目录,头文件(h/hpp)、库文件(lib/so/a)、二进制文件(dll/exe)。集成Visual Studio后,vs会自动链接到此目录,你只需要引用头文件即可。vs自动引用库文件(编译后vs会自动将库文件(dll/so/a)复制项目运行目录)。
installed\x64-windows\debug:表示此目录中的库文件(lib/so/a)、二进制文件(dll/exe)都是debug模式
installed\x64-windows\lib\manual-link:表示此目录中的库文件(lib/so/a)不会自动引用,需要你在项目中手动设置
packages: 【允许删除】在不同的软件包之间用于暂存的内部文件夹
ports: 【不能修改删除】用于描述每个库的目录、版本和下载位置的文件。 如有需要,可添加自己的端口
scripts: 【不能修改删除】由 vcpkg 使用的脚本(CMake、PowerShell)
toolsrc: 【不能修改删除】vcpkg和相关组件的 C++ 源代码
triplets: 【不能修改删除】包含每个受支持目标平台(如 x86-windows 或 x64-uwp)的设置
*.* 其它文件都不允许手动修改
1.1.9 其它
因为vcpkg太过于自动化了,当开发完成后我们可能不知道使用项目依赖的软件包,我们可以通过下列命令查看:
1.1.9.1 windows
从开始菜单->“Visual Studio 2019”->“x64 Native Tools Command Prompt for VS 2019”中运行
dumpbin /DEPENDENTS PackageName.dll
或者
dumpbin /DEPENDENTS PackageName.exe
1.1.9.2 linux
ldd PackageName.so
ldd PackageName.a
ldd PackageName