[Qbs] Dependencies on internal products using 'submodules'
Jake Petroules
Jake.Petroules at qt.io
Sun Dec 3 08:40:17 CET 2017
Qbs has a global view of the entire project, so there's no need to qualify the names of your lib1, lib2 dependencies with the name of the sub-project in which they're defined. I think your idea of a cleaner syntax could be something of the form:
Depends { names: ["lib1", "lib2"] }
Basically, a condensed syntax that would allow to specify multiple dependency names in a single depends item, and optionally apply additional properties to all of those, like so:
Depends { names: ["lib1", "lib2"]; condition: project.hasCoolLibs }
equivalent to:
Depends { name: "lib1"; condition: project.hasCoolLibs }
Depends { name: "lib2"; condition: project.hasCoolLibs }
A "names" property as such would be mutually exclusive with the existing submodules and productTypes property, as well as the name property.
However your proposal as-is cannot work as the name of a dependency must be the name of a product or module, and projects have nothing to do with this. I don't think trying to add them into the mix would make any sense, but I think something what I suggested above would effectively solve the same problem I believe you're looking to do so, which is to remove redundant syntax (and my proposal requires fewer characters too :D).
> On Dec 2, 2017, at 11:27 PM, Christian Gagneraud <chgans at gmail.com> wrote:
>
> Hi there,
>
> I would like to know if it's possible to list internal product dependencies using the 'submodules' syntax, eg:
>
> MyProduct {
> name: "foo"
> files: [
> ...
> ]
> Depends {
> name: "Qt"
> submodules: [
> ...
> ]
> }
> Depends {
> name: "LibrarySubProject"
> submodules: [ // <=====
> "lib1",
> "lib2"
> ]
> }
> }
>
> Where "LibrarySubProject" is an inline sub-project in the root project and lib1, lib2 are internal library products referenced by "SubProject".
> This is different from my "third party" modules defined in $qbsSearchPath/modules/ThirdParty/..."
>
>
> I know I can use the Depends { name: "lib1" } form, but for "cosmetic" reasons, I would like to use the 'submodules' approach.
>
> You might think that i'm a bit picky, but using this syntax, it makes the product.qbs easy to read, pleasant *and* easy to understand.
> That could help me to convince people while show-casing qbs.
>
> I could write one module per library in $qbsSearchPath/modules/ but that would be redundant and a bit awkward to maintain.
>
>
> Chris
> _______________________________________________
> Qbs mailing list
> Qbs at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qbs
--
Jake Petroules - jake.petroules at qt.io
The Qt Company - Silicon Valley
Qbs build tool evangelist - qbs.io
More information about the Qbs
mailing list