Is there no way to do this in two files instead of three? It doesn't seem
like I can put the `import YourFunctions` before the `Project`, so I need a
separate file for the Project and Product, and then a third for the
javascript. Is that right?

Cheers,

Tim


On 15 May 2014 10:37, Denis Shienkov <denis.shien...@gmail.com> wrote:

> Hi,
>
> 1. Your function shall be in the functions.js file , e.g. in:
> /yourproject/qbs/imports/YourFunctions/functions.js
> 2. Also your Project should have an option:
>
> Project {
> ...
> qbsSearchPaths: "qbs"
> ...
> }
>
> 3. Your Product's file should contains:
>
> ...
> import YourFunctions
> ...
> ...
> property string gnuToolsDir: YourFunctions.findGnuToolsDir();
> ...
>
> I would make it so. Also you can look how this done by analogy, e.g. in
> QtCreator's sources.
>
>
> BR,
> Denis
>
>
>
>
> 2014-05-15 12:30 GMT+04:00 Tim Hutt <tdh...@gmail.com>:
>
>>  Hi,
>>
>> I have a QBS script that depends on using the GNU Arm toolchain, and I
>> want it to automatically find them (on Windows for now). In my QBS I have
>> this line:
>>
>>      property string gnuToolsDir: "C:/Program Files/GNU Tools ARM 
>> Embedded/4.8 2014q1"
>>
>>
>> And then I use that elsewhere. I want to set it to be a function, like
>> this:
>>
>>      function findGnuToolsDir()
>>
>>      {
>>
>>              // TODO: Fancy searching function.
>>
>>              return "C:/Program Files/GNU Tools ARM Embedded/4.8 2014q1";
>>
>>      }
>>
>>              property string gnuToolsDir: findGnuToolsDir();
>>
>>
>> But that doesn't work (says it can't find the function). Additionally, I 
>> can't seem to access the property in my Rules - it says the variable doesn't 
>> exist.
>>
>>
>>
>>      Rule {
>>
>>              // ...
>>
>>              prepare: {
>>
>>
>>                      // None of these work:
>>
>>                      var objCopyPath = gnuToolsDir + 
>> "/bin/arm-none-eabi-objcopy.exe";
>>
>>                      var objCopyPath = parent.gnuToolsDir + 
>> "/bin/arm-none-eabi-objcopy.exe";
>>
>>                      var objCopyPath = product.gnuToolsDir + 
>> "/bin/arm-none-eabi-objcopy.exe";
>>
>>                      // ...
>>
>>              }
>>
>>      }
>>
>>
>> Any ideas? I've seen the Probe item but it doesn't seem suitable - as far as 
>> I can tell it just determines the existence of a library or tool rather than 
>> its location.
>>
>>
>> Cheers,
>>
>>
>> Tim
>>
>>
>> _______________________________________________
>> QBS mailing list
>> QBS@qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/qbs
>>
>>
>
_______________________________________________
QBS mailing list
QBS@qt-project.org
http://lists.qt-project.org/mailman/listinfo/qbs

Reply via email to