当我按照the VCPKG documentation page中的步骤在Windows上安装时,上述步骤在行.\bootstrap-vcpkg.bat
上失败。
具体来说,正是我按照上面链接中的说明执行的步骤。
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
吗?
答案 0 :(得分:0)
我将VCPKG_ROOT
环境变量错误地定义为一个目录,该目录是vcpkg
项目的根目录的子目录。
这是一个容易犯的错误,如下所述。
vcpkg
可执行文件本身会检查是否存在VCPKG_ROOT
环境变量,如果存在,则使用其值来覆盖vcpkg
项目的根文件夹路径,即由运行中的vcpkg
二进制文件在内部使用。
我出于不同的目的创建了一个具有相同名称(VCPKG_ROOT
)的环境变量-这样就可以为我自己的下游应用程序提供安装了库的include
文件的路径通过vcpkg
。我之所以选择名称VCPKG_ROOT
是有道理的,因为实际上vcpkg
默认情况下会将库安装到其自己的根目录的子目录中。
特别是:
<vcpkg>
... vcpkg
可执行文件会安装库,以便将已安装的库的包含路径放置在<vcpkg>\installed\...\include\
(其他二进制文件(例如二进制文件)也放在<vcpkg>
内嵌套的目录中。)
问题是我将VCPKG_ROOT
定义为第二个项目符号,而不是第一个。因此,考虑到在两种情况下都选择名称“ VCPKG_ROOT
”,这是一个容易犯的错误!
我只是通过pull request to the vcpkg
project提出了一条改进的错误消息-如果被接受,这可以为其他可怜的灵魂省去追踪此故障的压力和时间。