Replies: 14 comments 8 replies
-
They are not experimental anymore. No it is not possible to specify the triplet inside the vcpkg.json file. To set the triplet do |
Beta Was this translation helpful? Give feedback.
-
I see, I think... so I would still list triplets on the command-line as normal but it will gather which ports to install against those triplets from the manifest file? In my example above, we don't build every port with every triplet, specifically we don't use 64-bit builds of several ports. I suppose building them doesn't matter too much, but can I control this in the manifest rather than do multiple install runs on each triplet? Will the documentation be updated to reflect this is now a stable feature? I need to update my vcpkg installation clearly! |
Beta Was this translation helpful? Give feedback.
-
When I run Will the flag change - is |
Beta Was this translation helpful? Give feedback.
-
According to the document, the |
Beta Was this translation helpful? Give feedback.
-
@JackBoosY those things are clear but does this mean if I am using a manifest file, I can only specify one triplet in each run? When specifying ports on the commandline I can do e.g.:
But with manifest I'd have to run it twice:
This was raised, then closed, #7432, without explanation. The other thing I was curious about was, I cannot explicitly specify the manifest file name, only the path to search for vcpkg.json? Would this be a reasonable feature-request |
Beta Was this translation helpful? Give feedback.
-
@jdx-john we do not support multiple triplets with manifest mode, since we don't think it's a useful feature. The only way one can do this is with "host triplets". Basically, your "target" triplet is used for libraries and the like, while your "host" triplet is used for binaries and tools. Manifest mode is more for "one-tree-per-build", which means that you only need one triplet for libraries (plus one for host tools). |
Beta Was this translation helpful? Give feedback.
-
Thanks @strega-nil I was confused about host/target triplets the other week but decided it wasn't something I needed to know :) We can't be the only team who build the same solution twice with different configurations? e.g. we build Solution.sln twice, once for Release | x86 and once Release | x64. Or, many people must have a solution which has some x86 and some x64 projects - so it's likely you might need both x86 and x64 versions of the same libraries. If it's possible to 'cheat' using host/target triplets to build against two triplets, could you give me an example how to do this? |
Beta Was this translation helpful? Give feedback.
-
We have the same problem. We set the install dir to |
Beta Was this translation helpful? Give feedback.
-
Am I correct that when building with manifest, it wipes the target directory unlike when building explicit targets? |
Beta Was this translation helpful? Give feedback.
-
@jdx-john yeah, manifests is really not about "just being a list of packages to install". If that's what you want, you're better off using a response file and classic mode. Manifest mode is about installing the packages you need for your current project and configuration, the same way other language package managers (like cargo) work. The experience in CMake is likely better, since I was the one who implemented and I know CMake a lot better. I think @autoantwort has the right idea tho, and I would like to figure out the best way to implement this in vcpkg proper by default. |
Beta Was this translation helpful? Give feedback.
-
OK I think we'll either use a simple script or look into response files (I hadn't seen those). We have a pretty giant solution so prefer our vcpkg dependencies are prebuilt in one place. Manifests sound like not the best fit here. Thanks for clarifying. |
Beta Was this translation helpful? Give feedback.
-
Discussion ended up nearly 2 years ago and I only saw people posting hacks. Not sure if this also applies to custom triplets, but for default ones (for example |
Beta Was this translation helpful? Give feedback.
-
Why make controlling linkage such a pain in the ass? Currently, the only way to control linkage is to rely on triplets, which control both platform and linkage, which I don't think is a very good design. Customizing your own linkage is a very common requirement, and coupling linkage with platform makes this common requirement a pain. |
Beta Was this translation helpful? Give feedback.
-
We use custom triplets in our project, so currently we might run from the command-line:
I was reading up on manifests, which I understand is still experimental: https://vcpkg.readthedocs.io/en/latest/users/manifests/
Is it possible to specify these exact combinations directly in my JSON file, if so what would that look like? Docs show examples of using the
platform
field:"platform": "!(windows & static) & !osx"
But this doesn't seem a direct mapping to explicit triplet specification per-dependency.
May I ask, are substantial changes to manifests expected, is there a timeline when it is likely to drop experimental status and the command-line options change?
Beta Was this translation helpful? Give feedback.
All reactions