记录本身安装 cpp 包管理 vcpkg 的过程git
[toc]github
0. 开发环境
1. 下载 vcpkg
2. 编译安装
3. 使用 vcpkg 的坑
4. 结语shell
vcpkg 项目地址:https://github.com/Microsoft/...json
因为国内环境,不推荐直接下载(整个项目大约 80 MB),我推荐下面两种下载方式:bootstrap
直接运行 bootstrap-vcpkg.bat (Windows)windows
将生成的 vcpkg.exe 添加到用户 PATH 中,Windows 系统注销后从新登陆,使 PATH 刷新安全
若是 vcpkg 在运行时崩溃,建议以 Debug 模式从新编译安装 vcpkg(保证使用 vs 调试时有充足的调试信息),这样能够在崩溃时使用 vs attach 到 vcpkg 进程进行 debug 。笔者第一次安装时 vcpkg.exe 直接 crash,我从新编译一遍(设置 msbuild 为 debug 模式)后,attach 到 vcpkg.exe 后,发现抛出的异常显示 copy pwsh.exe powershell.exe 失败,大几率是由于 powershell 7 安装到了 C:Program Files ,而这个文件夹下的复制操做都须要管理员权限,致使 copy 操做失败而抛出异常。工具
笔者下载第三方库时,发现 vcpkg 没有识别笔者开发环境中的 git 和 cmake,而后它竟然开始下载他们……ui
打开 vcpkg 项目的下载目录,修改 vcpkgscriptsvcpkgTools.xml 配置文件:url
(下面的配置文件为摘选,列出的 tool 仅仅为笔者环境中须要从新配置的项目)
<?xml version="1.0"?> <tools version="2"> <tool name="cmake" os="windows"> <version>3.15.5</version> <exeRelativePath>完整安装目录\cmake.exe</exeRelativePath> <url>......</url> <sha512>......</sha512> <archiveName>......</archiveName> </tool> <tool name="git" os="windows"> <version>2.14.4</version> <exeRelativePath>完整安装目录\git.exe</exeRelativePath> <url>......</url> <sha512>......</sha512> <archiveName>......</archiveName> </tool> <tool name="7zip" os="windows"> <version>19.0.0</version> <exeRelativePath>完整安装目录\7z.exe</exeRelativePath> <url>......</sha512> <archiveName>......</archiveName> </tool> <tool name="powershell-core" os="windows"> <version>7.0.3</version> <exeRelativePath>完整安装目录\pwsh.exe</exeRelativePath> <url>......</url> <sha512>......</sha512> <archiveName>......</archiveName> </tool> </tools>
读者须要根据本身的配置文件,下载安装缺失的 tool,并配置 <version> 和 <exeRelativePath>
(尤为注意不要把 version 填错了,否则 vcpkg 会认为版本不对而从新下载对应 version 的版本)
笔者在安装 powershell 7 后,将其安装在C:\Program Files
下。根据上文 2. 中所述,最终发现 vcpkg.exe 竟然执行了 copy 操做,进一步致使抛出异常。笔者最后修改了 powershell7 安装目录的
属性
和安全选项卡
容许对目录和目录下文件的写操做,解决了这个问题。读者也能够将其安装到其余目录下以提早解决这个问题(windows diss!)
笔者使用 vs 来开发 cmake 项目。
因为使用 vcpkg 配合 cmake,须要设置 CMAKE_TOOLCHAIN_FILE
和 VCPKG_TARGET_TRIPLET
,因此笔者使用 CMakeSettings.json 配置文件(点击 vs 的菜单栏 > CMake > 更改CMake设置),添加 “variables” 项目,并在 “variables” 中添加两项:
{ "configurations": [ { "variables": [ { "name": "CMAKE_TOOLCHAIN_FILE", "value": "vcpkg完整安装目录\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake" }, { "name": "VCPKG_TARGET_TRIPLET", "value": "编译目标x64-windows-static" } ] } ] }
find_package()
找不到第三方包问题笔者环境下,这个问题是由于 vs 集成的 cmake 工具版本过低。
笔者将其余版本的 cmake 安装目录直接覆盖了 vs 内建的 cmake 目录(D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake
),注意覆盖的不是 CMake/bin/cmake.exe,而是 CMake 整个目录