How will Gradle handle publishing and resolving C++ binary variants

How should we publish and resolve different variants of C++ binaries and their dependencies to repo managers like Artifactory?

Reading the design docs I see that you want to keep the variant identifiers out of the binary names and resolve them using metadata. What will this metadata be and when do you think Gradle will support it?

To solve this now I am looking at an Ivy descriptor customized to include variant identifiers, published to a custom layout repository and some code to help resolve them. The information to capture is the toolchain (gcc, clang, msvs, ming), target platform (os, architecture), build type (compiler settings like debug/release) and optionally a flavour (en/fr, demo/pro etc).

I’d like it if whatever I came up with aligned with the future support in Gradle and am interested in your thoughts.

We’re actively working on the design for this stuff, and hope to have something functional in the next few months. The plan is to start by getting project/component dependencies to work properly (which don’t require published metadata) and the work out how to externalise the required metadata.

When we have more concrete ideas about how it might work and how the metadata might look, we’ll update the design docs. The other design doc to watch is: https://github.com/gradle/gradle/blob/master/design-docs/dependency-management.md