我有一个 Visual Studio C++ 解决方案 (MsBuild),其中包含一百多个项目。
一些项目依赖于第三方库,例如
fmt
,zlib
等(它们作为DLL +标头存储在共享驱动器上,这是通过.props
文件配置的),并且还存在对内部库的依赖来自私有 NuGet 通道(也是 DLL + 标头,在 .vsxproj
文件 + packages.config
中配置)。
我正在尝试现代化/简化依赖管理,并考虑
vcpkg
作为主要选项,并希望在迁移后:
vcpkg
)。NuGet
和 vcpkg
依赖性(例如,摆脱 packages.config
并将所有配置仅放在 vcpkg.json
或类似的中)fmt
)简单来说,我只想有一个地方指定所有必需的依赖项,并尽可能少地与 Nuget 进行交互。我从来不希望两个项目使用同一依赖项的不同版本。
我尝试了来自https://learn.microsoft.com/en-us/vcpkg/get_started/get-started-msbuild的基本教程,但它似乎并没有让我更接近,特别是在包含很多项目解决方案的解决方案(我最终得到的每个项目配置比开始时还要多)。
非常感谢任何帮助或此类设置的示例。预先感谢。
最终每个项目的配置比我开始时还要多
是的,看起来
vcpkg new
命令在每个项目目录中添加了 vcpkg.json
文件和 vcpkg-configuration.json file
。在经典模式下,包默认位于 vcpkg 根文件夹下的 installed/
。在Manifest模式下,默认为manifest文件夹下的vcpkg_installed/
。
所以我认为问题是如何跨多管道项目管理 vcpkg。 通过查看此类似票证,Osyotr 建议使用二进制缓存来实现它。
此外,我对如何控制全局安装的依赖项有一些想法,而不是每个项目使用
vcpkg.json
文件。
git clone https://github.com/microsoft/vcpkg.git /path/to/shared/vcpkg
vcpkg install <library_name> --x-install-root=<shared folder>
右键单击您的项目 -> 选择属性 -> C/C++ > 常规
例如
$(VCPKG_ROOT)\installed\x64-windows\include
$(VCPKG_ROOT)\installed\x64-windows\lib