Replies: 4 comments 14 replies
-
There is nothing more global than the top-level manifest. |
Beta Was this translation helpful? Give feedback.
-
This is an interesting scenario and one I think we need to consider further. I added it to the agenda for the next meeting between the maintainers of vcpkg. We will get back to you hopefully later this week with our thoughts. |
Beta Was this translation helpful? Give feedback.
-
Everyone picking 1 baseline is insufficient to resolve this situation, because |
Beta Was this translation helpful? Give feedback.
-
+1 to what @BillyONeal said earlier. What you originally proposed won't achieve what you want. The fundamental you want to get to is one install tree with one install command. It sounds like you are trying to address 2 constraints:
Our proposed solution allows you to configure your projects such that you can call "vcpkg install" on project F to resolve your dependencies, before building it with the Makefile, while respecting the constraints above. This requires several steps:
You would still want to have a vcpkg.json file for project F as well as some vcpkg.json files for A and D. The manifest files for A and D would determine if you are using the overlay ports or the original ones. When you run "vcpkg install" it should be run at the project F level Below is an example directory structure:
|
Beta Was this translation helpful? Give feedback.
-
We have a large production workspace with dozens of Makefile projects, many that depend upon each other. I'm augmenting the make build system so that the Makefile projects can also depend upon:
It is important in this situation that we do not have different versions of the same dependency being introduced in a build. For example, we don't want the following potential version conflict to occur:
I've done some research and there doesn't seem to be a way to achieve this that doesn't involve manually checking that all
vcpkg.json
/vcpkg-configuration.json
in every project set a consistent baseline, and needing to update them all manually whenever we want to do a dependency update across all projects.If all internal
vcpkg.json
do not specify port versions in their dependencies (i.e. no"version>="
unless required) then the vcpkg versioning algorithm will resolve the above issue provided all baselines are the same.It would be great if there was a way to set a global baseline. It appears this can be done in Classic Mode by adding a
vcpkg-configuration.json
to VCPKG_ROOT. But I don't see any way to do this with manifest mode.Beta Was this translation helpful? Give feedback.
All reactions