Details
-
Suggestion
-
Resolution: Done
-
P2: Important
-
0.3, 1.0.0
-
41595d0cf8ac00416a3a8a437eedde2715f75500 532656a552b8b4a263fd58003dbd7063564d1448
Description
Currently there is no way to combine leaf artifacts from a multiplexed build of a product without an additional product to receive such artifacts as inputs from dependencies. Android is served by the current approach because an application, library, and APK are all separate products. An iOS application built for multiple architectures is one product only, and using multiple products for such a case is highly undesirable.
Ideas:
- Nested products? Maybe every profile instance in multiplexing creates a nested product? Product-level Rules can then combine artifacts from child products (which the parent product automatically depends on all of). Downside is reliance on particular items, but customizability remains high
- Rule condition defaults to product.profile !== undefined, product.profile === undefined refers to the "meta build". A product is built for the specified profiles plus the parent profile. The parent profile Rules take effect only for the parent. Or, every product (even non multiplexed) additionally gets built for an invisible profile that can have Rules applied only for that "slice".
- Multiplexing on buildVariant, e.g. to combine debug/release OS X frameworks (
QBS-292)
Gradle's "flavors" might be worth looking into as design inspiration. https://docs.gradle.org/current/userguide/nativeBinaries.html#flavors This is used on Android for multiple architectures and multiple APKs.
Attachments
Issue Links
Gerrit Reviews
For Gerrit Dashboard: QBS-192 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
187665,27 | Implement basic support for multi-config products on Darwin and Android | master | qbs/qbs | Status: MERGED | -2 | 0 |
187665,27 | Implement basic support for multi-config products on Darwin and Android | master | qbs/qbs | Status: MERGED | -2 | 0 |