[QBS] Always build an artifact

Stéphane Fabry sf at xris.eu
Sat Dec 6 14:13:45 CET 2014


Hi Christian,

I confirm I get it working with Qt-creator and qbs from master.
But I also experienced repeated crashes when opening some qbs files in 
qtcreator...

So maybe I will way this get's released before using in production.
Is it planned to have qbs 1.4 in next Qt 5.4 release ?

Thanks for your help solving this.

Stéphane

Le 05-12-14 10:15, Christian Kandeler a écrit :
> On 12/05/2014 08:53 AM, Stéphane Fabry wrote:
>> - Depends{name:"obj"}  does not seems to work, it says "Product
>> dependency 'obj' not found for profile ..."
> Huh? "obj" is an input tag to your rule, not a product. It's the tag
> that qbs gives to object files created by the compiler.
>
>> - I updated the my example to use output.filePath but in either way I
>> can't get the buildtag.txt file, the command is run but I can't found
>> the generated file... is the example too trivial (no source to build ?)
> It's where you specified it to be in the Artifact item. Note that
> relative paths are anchored at the product build directory.
>
>> - I can download and build qbs from master but then how should I
>> configure QtCreator to use the version I've just build ? Is it just the
>> qbs.exe to copy into the Tools directory ?
> No, you'd have to use Creator from the master branch as well.
>
>
> Christian
>
>> Le 04-12-14 16:13, Christian Kandeler a écrit :
>>> On 12/04/2014 03:00 PM, Stéphane Fabry wrote:
>>>> I tried to do what you explained, but can't get it working.
>>> Sorry, I made two mistakes in my explanation:
>>>        1) You don't need a pseudo-artifact. Just set "alwaysUpdated" to
>>>           false in your real artifact.
>>>        2) This works only in master, not in 1.3.
>>> So, what's a workaround you can use in 1.3? Maybe have a dependency on
>>> the "obj" tag? If no object file changes, you won't have a new build, right?
>>>
>>>
>>> Christian
>>>
>>> (Btw., in your example you create the "build.txt" file not at the place
>>> you specified in the Artifact item. To prevent such inconsistencies, we
>>> recommend using the outputs variable to access these paths.)
>>>
>>>> Here is the minimal project I tried:
>>>>
>>>> importqbs1.0
>>>>
>>>> import  qbs.TextFile
>>>>
>>>> import  qbs.FileInfo
>>>>
>>>> Product  {
>>>>
>>>>        name:  "Build  Tag"
>>>>
>>>>        type:  "buildtag"
>>>>
>>>>        targetName:  "buildtag.txt"
>>>>
>>>>        Group  {
>>>>
>>>>            name:  "Fake  input"
>>>>
>>>>            files:  "fake.in"
>>>>
>>>>            fileTags:  ["in_tag"]
>>>>
>>>>        }
>>>>
>>>>        Rule  {
>>>>
>>>>            inputs:  ["in_tag"]
>>>>
>>>>            Artifact  {
>>>>
>>>>                filePath:  "buildtag.txt"
>>>>
>>>>                fileTags:  "buildtag"
>>>>
>>>>            }
>>>>
>>>>            Artifact  {
>>>>
>>>>                alwaysUpdated:  false
>>>>
>>>>                filePath:  "fakeOutput"
>>>>
>>>>            }
>>>>
>>>>            prepare:  {
>>>>
>>>>                var  cmd  =  new  JavaScriptCommand();
>>>>
>>>>                cmd.description  =  "Update  build  date  tag  !"
>>>>
>>>>                cmd.sourceCode  =  function()  {
>>>>
>>>>                    var  file  =  new  TextFile("./buildtag.txt",  TextFile.WriteOnly);
>>>>
>>>>                    var  today  =  new  Date()
>>>>
>>>>                    file.writeLine(today.toISOString());
>>>>
>>>>                    file.close();
>>>>
>>>>                }
>>>>
>>>>                return  cmd;
>>>>
>>>>            }
>>>>
>>>>        }
>>>>
>>>> }
>>>>
>>>>
>>>> Thanks
>>>>
>>>>
>>>>
>>>> Le 04-12-14 10:59, Christian Kandeler a écrit :
>>>>> On 12/03/2014 10:18 PM, Stéphane Fabry wrote:
>>>>>> I'm trying to create an artefact (a simple text file) that contain the
>>>>>> last date of build,
>>>>>> so i just need to write the date 'now' each time the project is build.
>>>>>>
>>>>>> The problem is I don't know how to tell qbs to rebuild the artefact each
>>>>>> time the project is build (or partially build) ?
>>>>>>
>>>>>> Has someone an idea how to do this ?
>>>>> Yeah, we really should add some rule property that makes this kind of
>>>>> thing straightforward. You could file a bug report to enhance the
>>>>> visibility of this issue.
>>>>> I assume you are using a Transformer item now? The workaround is to use
>>>>> a rule instead (give some random input tag, as there needs to be at
>>>>> least one) and in this rule, in addition to your real output artifact,
>>>>> declare a second one that you will never create and set its
>>>>> "alwaysUpdated" property to false (the filePath can be anything, as long
>>>>> as it's uniqe). This should achieve what you want.
>>>>>
>>>>>
>>>>> Christian
>>>>>
>>>>> _______________________________________________
>>>>> QBS mailing list
>>>>> QBS at qt-project.org
>>>>> http://lists.qt-project.org/mailman/listinfo/qbs
>>>> --
>>>> *Stéphane Fabry*, Project & IT Manager
>>>> +32 (0)4 367 07 92
>>>> *X-RIS* | /X-Ray Imaging Solutions/
>>>> www.xris.eu/contact.html
>>> _______________________________________________
>>> QBS mailing list
>>> QBS at qt-project.org
>>> http://lists.qt-project.org/mailman/listinfo/qbs
>> --
>> *Stéphane Fabry*, Project & IT Manager
>> +32 (0)4 367 07 92
>> *X-RIS* | /X-Ray Imaging Solutions/
>> www.xris.eu/contact.html
>>
>>
>> _______________________________________________
>> QBS mailing list
>> QBS at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/qbs
>>
> _______________________________________________
> QBS mailing list
> QBS at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qbs
>

-- 
*Stéphane Fabry*, Project & IT Manager
+32 (0)4 367 07 92
*X-RIS* | /X-Ray Imaging Solutions/
www.xris.eu/contact.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20141206/7c5f451b/attachment.html>


More information about the Qbs mailing list