cpp 包管理 vcpkg 安装记录

记录自己安装 cpp 包管理 vcpkg 的过程

[toc]

0. 开发环境
1. 下载 vcpkg
2. 编译安装
3. 使用 vcpkg 的坑
4. 结语

0. 开发环境

  • 操作系统 Windows10
  • 编译环境 visual studio 2017(虽然笔者使用 vs 开发,但是项目构建采用 vs 内建的 cmake)

1.下载 vcpkg

vcpkg 项目地址:https://github.com/Microsoft/...

由于国内环境,不推荐直接下载(整个项目大约 80 MB),我推荐下面两种下载方式:

  1. 使用 Gitee 下载,Gitee 上有一个 vcpkg 加速下载的项目
  2. 使用 https://gitclone.com/github.c... 下载,下载原理参见 Github下载速度慢 提升github下载速度最新解决方案 跟龟速说拜拜(持续更新 保证方案可行 建议收藏)

2. 编译安装

直接运行 bootstrap-vcpkg.bat (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 操作失败而抛出异常。

3. 使用 vcpkg 的坑

3.1 vcpkg install xxx

笔者下载第三方库时,发现 vcpkg 没有识别笔者开发环境中的 git 和 cmake,然后它居然开始下载他们……

打开 vcpkg 项目的下载目录,修改 vcpkgscriptsvcpkgTools.xml 配置文件:

(下面的配置文件为摘选,列出的 tool 仅仅为笔者环境中需要重新配置的项目)



    
        3.15.5
        完整安装目录\cmake.exe
        ......
        ......
        ......
    
    
    
        2.14.4
        完整安装目录\git.exe
        ......
        ......
        ......
    
    
    
        19.0.0
        完整安装目录\7z.exe
        ......
        ......
    
    
    
        7.0.3
        完整安装目录\pwsh.exe
        ......
        ......
        ......
    

读者需要根据自己的配置文件,下载安装缺失的 tool,并配置

(尤其注意不要把 version 填错了,不然 vcpkg 会认为版本不对而重新下载对应 version 的版本)

笔者在安装 powershell 7 后,将其安装在 C:\Program Files 下。根据上文 2. 中所述,最终发现 vcpkg.exe 居然执行了 copy 操作,进一步导致抛出异常。

笔者最后修改了 powershell7 安装目录的 属性安全选项卡 允许对目录和目录下文件的写操作,解决了这个问题。读者也可以将其安装到其他目录下以提前解决这个问题(windows diss!)

3.2 visual studio cmake

笔者使用 vs 来开发 cmake 项目。

  • 配置 vs cmake 项目

由于使用 vcpkg 配合 cmake,需要设置 CMAKE_TOOLCHAIN_FILEVCPKG_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 整个目录

4. 结语

  • 环境配置花了一晚上 + 一上午的时间……
  • 如果 vcpkg.exe 运行时直接 crash,请利用 2. 介绍的方法自行 debug
  • 如果 vcpkg 在安装某个第三方包时失败,请仔细查看 error 信息(笔者经常发现是 cmake 或 git 的原因,尝试重新安装高版本就可以了)
  • vcpkg 国内下载速度很慢,大多时候笔者都是自己手动下载压缩文件,然后交给 vcpkg 管理(具体细节请自行搜索,非常简单^_^)

你可能感兴趣的:(c++,visual-studio,cmake,github,环境搭建)