[QBS] Properties for multiple conditions

Markus Biggel sicus01 at googlemail.com
Mon Dec 16 13:29:09 CET 2013

I want to set up a project with properties to set macros, now more than one
property can be true, but this does not work. how can I realize this. for

I want the macro LNX_DEFINE under linux, WIN_DEFINE under windows,
DBG_DEFINE if the project is build as debug and MY_DEFINE which is always
set. I tried the following:

//--------------- part of qbs file --------------------------------
Properties {
  condition: qbs.targetOS.contains("linux")
  cpp.defines: LNX_DEFINE

Properties {
  condition: qbs.targetOS.contains("windows")
  cpp.defines: WIN_DEFINE

Properties {
  condition: qbs.buildVariant.contains("debug")
  cpp.defines: DBG_DEFINE

Properties {
  condition: true
  cpp.defines: MY_DEFINE

If I build debug on linux, I expected to see LNX_DEFINE, DBG_DEFINE and
MY_DEFINE set, release on windows WIN_DEFINE and MY_DEFINE and so on. But
this is not the case, the first true condition is set, all conditions below
are ignored. it looks like this is equivalent to
if (targetOS.contains("linux") {}
else if (targetOS.contains("windows")) {}
else if (buildVariant.contains("debug") {}

But I need something like:
if (targetOS.contains("linux") {}
if (targetOS.contains("windows")) {}
if (buildVariant.contains("debug") {}

or, at least, the buildVariant condition is treated seperately from
targetOS (two ore more blocks of buildVariant or targetOS can be, of couse,
if - else equivalents), like:

if (targetOS.contains("linux") {}
else if (targetOS.contains("windows") {}
if (buildVariant.contains("debug") {}

Is there a way to realize this?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20131216/d62e7640/attachment.html>

More information about the Qbs mailing list