【问题标题】:Problem using vcpkg in Visual Studio (msbuild) with a project built as x86 & x64在 Visual Studio (msbuild) 中将 vcpkg 与构建为 x86 和 x64 的项目一起使用时出现问题
【发布时间】:2022-10-21 17:18:49
【问题描述】:

我是 vcpkg 的新手,目前在构建需要构建为 x86 和 x64 的项目时遇到问题。也许我只是遗漏了一些东西或者不明白它是如何工作的: 问题是,在为 x86 构建一次之后,为 x86 构建项目失败,然后是 x64。

我们在项目根目录中有vcpkg.jsonvcpkg-configuration.json,并在Visual Studio 中使用此设置:

问题可以重现如下: 当第一次从 Visual Studio 以Win32 构建项目时,vcpkg 会构建 x86 依赖库。构建成功。 现在 vcpkg installed 目录如下所示:

之后构建 x64 版本也成功,但删除了 installed 目录中的 x86-windows 文件夹。 x86 版本的后续构建然后失败(删除.msbuildstamp-x86-windows.stamp 使其再次“工作”,因为依赖关系再次构建)。

我没想到会出现这种行为,尤其是因为.msbuildstamp-x86-windows.stamp 没有被删除。

谢谢你的帮助。

【问题讨论】:

标签: msbuild visual-studio-2022 vcpkg


【解决方案1】:

问题是由 .vcproj 文件中 <VcpkgEnableManifest>true</VcpkgEnableManifest> 的位置引起的。尽管 Visual Studio(在我们的案例中为 2022)在 UI 中将 Use Vcpkg Manifest 显示为 Yes,但 vcpkg 本身并未将其视为已启用。 在 .vcproj 文件中向上移动 <VcpkgEnableManifest>true</VcpkgEnableManifest> 可以解决问题并正确启用清单模式;见VCPKG issue #27106

【讨论】: