0

我的 vcxproj 之一(带有 vcpkg.json)看起来像这样 现存的

另一个(带有 vcpkg.json)看起来像这样。请注意缺少的选项。

在此处输入图像描述

但是我需要能够启用 vcpkg Manifest 以便它可以编译!我被卡住了,这个选项去哪儿了?两个项目都在同一个解决方案中。两者都将 vcpkg.json 添加到其源文件中。值得注意的是,一个具有不同的目录结构(proj/proj.vcproj 与 proj/build/proj.vcproj),因此 vcpkg.json 离得更远

作为设计说明,有条件的隐藏选项或灰色选项是一种反模式。

4

2 回答 2

1

仅 vcpkg.json 是不够的。需要在 proj.vcproj 文件中启用 vcpkg。

尝试以下步骤:

  • 关闭解决方案
  • 在普通编辑器中打开 proj.vcproj 文件
  • 在其中查找 VcpkgEnableManifest 和其他 vcpkg 属性。更好的是,使用 WinDiff 或类似的 DIFF 工具来发现 vcproj 文件之间的差异。

我不能更具体,因为您首先没有说明如何将 vcpkg 选项导入/集成到您的项目中。有很多不同的方法可以做到这一点。

例如,我正在使用 vcpkg export --nuget 命令导出一个 nuget 包,然后我使用 Visual Studio nuget 包管理器将其添加到我的个人项目中。这将从 nuget 包目录导入“vcpkg.props”。此导入命令会添加您缺少的选项。如果您使用相同的方法,您可能忘记将 nuget 包添加到您的其他项目。这种集成 vcpkg 的方式是“每个项目”而不是全局的,因此这两个项目是否在同一个解决方案中并不重要。

如果您使用 vcpkg 集成命令全局集成 vcpkg,情况会有所不同。在这种情况下,导入命令将位于某个 Microsoft.props 文件中,并且选项应出现在所有项目中。

于 2021-06-04T14:49:14.293 回答
0

好的,我找到了解决方法。vcpkg integrate project/install通过在 VS 打开和运行命令时卸载和加载 VS 项目,我使自己处于损坏状态。

我误解了这些命令。我以为vcpkg integrate project只为那个项目安装了 MSBuild vcpkg,所以我认为我必须为每个 .vcprojx 运行它。相反,vcpkg integrate project可能更好地命名vcpkg integrate nuget并且vcpkg integrate install可以命名为vcpkg integrate msbuild?

无论如何,解决方法是关闭 Visual Studio 的所有实例(我什至卸载了额外的版本),只运行vcpkg integrate install一次,然后重新打开 Visual Studio。然后它起作用了。

于 2021-06-10T03:33:22.100 回答