One more note: in the minimal example I can replace the SubProject with
a references property and it works.

Unfortunately, this is not a good work-around for me as I had to change
hundreds of test frames in our code...

Regards, Jochen


Am Donnerstag, dem 10.07.2025 um 14:11 +0200 schrieb Jochen Becher via
Qbs:
> 
> I was able to create a small (not necessary minimal) example. Please
> see the attached zip file.
> 
> It is much more complex than my original minimal code. The main
> aspect
> seems to me a change in qbs 3.0.0:
> 
> SubProject { filePath: "MyApp.qbs" }
> 
> seems to set parent differently than in the past. If I insert the
> content of MyApps.qbs which is a fairly simple CppApplication product
> then it works. The module "mymodule" also seems to be important to
> see
> the issue.
> 
> Regards, Jochen
> 
> 
> 
> Am Donnerstag, dem 10.07.2025 um 13:16 +0200 schrieb Richard
> Weickelt:
> > Hi,
> > 
> >  > readonly property stringList onEmbedded: parent.onEmbedded
> > 
> >  > Project {
> >  >  property bool mySetting: true
> >  >
> >  >  Project {
> >  >          property bool mySettings: parent.mySetting
> >  >                     ? parent.mySetting : false
> >  >  }
> >  > }
> > 
> > This looks problematic. Qbs flattens nested and merges referenced
> > project 
> > items during the evaluation process (see 
> > https://doc.qt.io/qbs/special-property-values.html#project). The 
> > documentation does not say it, but that's what Qbs does with
> > project
> > items 
> > under the hood AFAIK. If you define properties with the same name
> > shadowing 
> > each other and you use parent in addition, you may observe unwanted
> > side 
> > effects of the project merger. Maybe you get different results in
> > different 
> > projects because the property is evaluated at different times
> > during
> > the 
> > resolve proces. For instance during early project evaluation,
> > during
> > probe 
> > resolving or during module loading in products.
> > 
> > I was under the impression that the special "parent" alias is only
> > a
> > relict 
> > from the QML parser and not guaranteed to work in Qbs. The same
> > applies to 
> > "id". It's reserved for probes at the moment although it works in
> > other 
> > cases too.
> > 
> > Could you live with a different solution? This would work:
> > 
> > Project {
> >      property bool mySetting: true
> >      Project {
> >          property bool myOtherSetting: project.mySetting
> >              ? project.mySetting : false
> >      }
> > }
> > 
> > Or if you explain what you want to achieve, we may find a different
> > solution?
> > 
> > Richard
> > 
> > _______________________________________________
> > Qbs mailing list
> > Qbs@qt-project.org
> > https://lists.qt-project.org/listinfo/qbs
> 
> _______________________________________________
> Qbs mailing list
> Qbs@qt-project.org
> https://lists.qt-project.org/listinfo/qbs

_______________________________________________
Qbs mailing list
Qbs@qt-project.org
https://lists.qt-project.org/listinfo/qbs

Reply via email to