On 05/04/2017 04:19 PM, Thomas Ballenthin wrote:
> I'm currently building my unit tests each as individual CppApplication. This 
> works fine as it is. But now I'm facing the problem to build each unit test 
> twice with different compiler options per set.

Let me make sure I understand the use case correctly: You build your
project only once, but selected products shuld exist more than once,
with varying build properties?

> As I understand, each product outputs a single file. What is the most 
> convenient way to produce two binaries with different compiler switches from 
> the same source files? 

At the moment, the only way to really multiplex on the product level is
using (external) profiles. See the "profiles" entry in
https://doc.qt.io/qbs/product-item.html. As far as I can tell, this
would more or less map to the "flavor" thing if the profile contents
could be specified in-place, correct?

> I would like to reduce code duplication and not specify several 
> CppApplications per unit test. Is there a way to have a "product factory", or 
> rules that process groups of files and output binaries.

A less general way that might be sufficient for your needs would be to
move most of the product specification into a base item and instantiate
it twice:
// In TestX.qbs
CppApplication {
    // Depends { // ... }
    // files: [ ... ]
    // etc
}

// In your project file
Project {
    TestX {
        name: "testx1"
        cpp.defines: ["VARIANT1"]
    }
    TestX {
        name: "testx2"
        cpp.defines: ["VARIANT2"]
    }
}



Hope this helps,
Christian

_______________________________________________
Qbs mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/qbs

Reply via email to