0

当我按照VCPKG 文档页面中的步骤在Windows 上安装时,指出的步骤失败了.\bootstrap-vcpkg.bat

具体来说,这些是我遵循的步骤,完全按照上面链接中的说明进行。

  • 运行 Powershell(不是以管理员身份)
  • cd <parent_directory>
  • git clone https://github.com/Microsoft/vcpkg.git
  • cd .\vcpkg\
  • .\bootstrap-vcpkg.bat
  • .\vcpkg integrate install

所有上述步骤(似乎)都成功,直到最后一步(红色,下图)。

我看到以下输出:

(注意:屏幕截图最后还显示了另一行 - 我试图在其中安装所需的包以在项目中使用 - 失败并出现相同的错误。)

我查看了源代码,vcpkg发现有问题的代码行看起来像这样(vcpkg.cpp):

在此处输入图像描述

修改vcpkg.cpp源码显示丢失的路径,重新构建,测试显示丢失的目录为:

<vcpkg>/installed/...

...但是该目录在根目录installed中不存在。vcpkg

因为我遵循vcpkg文档中的基本安装说明,所以我对自己做错了什么、我的设置有什么问题或如何处理感到困惑。

有人可以解释为什么安装 VCPKG 之后调用“vcpkg install”会导致错误Changing the working dir failed吗?

4

1 回答 1

0

我错误地将VCPKG_ROOT环境变量定义为项目根目录的子目录vcpkg

正如我在下面所描述的,这是一个容易犯的错误。


vcpkg可执行文件本身检查环境变量是否存在,如果存在,则使用它的值覆盖正在运行的二进制文件内部使用VCPKG_ROOT的项目的根文件夹的路径。vcpkgvcpkg

我为不同的目的创建了一个具有相同名称 ( VCPKG_ROOT) 的环境变量 - 以便可以为我自己的下游应用include程序提供vcpkg. 我会选择 name 是有道理的VCPKG_ROOT,因为事实上vcpkg,默认情况下,将库安装到它自己的根目录的子目录中。

具体来说:

  • 如果“vcpkg”项目的根目录是<vcpkg>...
  • ...然后默认情况下,vcpkg可执行文件安装库,以便将安装的库的包含路径放置在<vcpkg>\installed\...\include\

(以及其他库文件,例如二进制文件,也放置在嵌套在 . 中的目录中<vcpkg>。)

问题是我定义VCPKG_ROOT为第二个子弹,而不是第一个。所以这是一个容易犯的错误,考虑到名称“ VCPKG_ROOT”的选择在这两种情况下都是有意义的!

我只是通过对项目的拉取请求vcpkg提出了改进的错误消息- 如果被接受,这可能会为其他一些可怜的灵魂节省压力和浪费时间来追踪这个故障。

于 2019-07-11T00:05:29.930 回答