[Qbs] Setting properties for all products

Richard Weickelt richard at weickelt.de
Wed May 29 00:25:02 CEST 2024


Hi,

> I have a project with multiple sub projects and products and want to move it 
> to embedded platforms, and thus I want to set compiler flags like mpcu, 
> which should be the same for all products. I know I can do it through the 
> QtCreator kit or the command line, but I'd like that to be commited so that 
> everyone uses the same flags.
> 
> I didn't find a solution, other than defining a module (or product) which 
> sets the flags and every product has to depend on. Is there another way? 
> Should there be another way? Because adding it to every product is a bit 
> tedious and error prone.
> 

You are not the first person requesting this:
https://bugreports.qt.io/browse/QBS-733
https://bugreports.qt.io/browse/QBS-894

The only other proposal was to create a base product which sets the relevant 
flags or loads other modules and let all other products inherit from that. 
That's of coursre not viable if you use predefined extended products like 
CppApplication/QtApplication & friends.

Eventually I settled on having a buildconfig module in my projects that all 
products have to depend on. There is one important advantage with that approach:

Qbs modules can be implemented in several files in a module folder. When 
loading a module with name "buildconfig", Qbs tests the Qbs files in the 
"buildconfig" module folder until it finds one with a matching condition. If 
you are ever going to support multiple target platforms or toolchain types, 
then such a solution would scale well.

That solution breaks as soon as you include other Qbs projects that are not 
under your control as sub-projects.

I still find a global Preference item useful or a default-dependencies 
property in the project item that attaches a module dependency to all products.

Richard



More information about the Qbs mailing list