How to manage vcpkg across many projects?
Asked Answered
I

0

7

I would love to use vcpkg to manage our dependencies with third party libraries, but I'm not sure how this is would work in our environment. We have hundreds of projects in our solution, and release new versions of our software over time. This is a very common situation for software development, but I don't understand how vcpkg can work effectively.

Global installation will not work. We need to tie our releases to specific versions of packages. So we're left with using manifests. In a manifest, you specify a "builtin-baseline" which is a great way to pin the build of a project to a point in time, with some guarantees that the dependencies between the different packages are correct.

This is all great for a project. How does one manage hundreds of projects?

  • We would like to use the same baseline across all projects. Is there a way to specify the builtin-baseline in one place?
  • Some packages are common to all projects. Is there a way to specify this in one place?
  • We use project files for building. By default, vcpkg uses a project-local install directory. We don't need 100s of copies of boost. There is a vcpkg project setting for "Installed Directory" which allows a global location. But again, this setting is per-project. I don't see any integration with .props files. Is there a way to manage this?
  • Is there a way to get a solution-wide listing of all packages?

Would using CMake make this all easier?

Ideograph answered 14/12, 2022 at 15:25 Comment(1)
Can't answer but my experience when using cmake. If your dependencies are in a vcpkg-registry you can use vcpkg with different baseline for each. But when you compile the project the baseline used will be the one of your main project even for indirect dependencies. That maybe a problem sometimes. You can detect that dependency on old baseline don't work with a new. In that case you have to update your dependency package to recent baseline, generate a new version for your main to use it.Bioscopy

© 2022 - 2024 — McMap. All rights reserved.