[QBS] Functions in QBS scripts and accessing properties from them.

Denis Shienkov denis.shienkov at gmail.com
Thu May 15 13:41:22 CEST 2014


oops, of course,

property string gnuToolsDir: MyFunctions.findGnuToolsDir();

instead of

property string gnuToolsDir: YourFunctions.findGnuToolsDir();

BR,
Denis


2014-05-15 15:39 GMT+04:00 Denis Shienkov <denis.shienkov at gmail.com>:

> E.g. IMHO, in your case should be like this:
>
>
> = myproject/myproject.qbs =
>
> import qbs 1.0
>
> Project {
>     qbsSearchPaths: "qbs"
>
>     references: [
>         "app/app.qbs",
>     ]
> }
>
>
> = myproject/qbs/imports/MyFunctions/functions.js =
>
> function findGnuToolsDir()
> {
> ...
> }
>
>
> = myproject/app/app.qbs =
>
> import qbs.base 1.0
> import MyFunctions
>
> Application {
>     name: "myapplication"
>
>     ...
>     ...
>     property string gnuToolsDir: YourFunctions.findGnuToolsDir();
>     ...
>     ...
>
> }
>
> But, if to be honest, I do not know how to do it by other way (I even do
> not trying do check other way). :)
>
> BR,
> Denis
>
>
>
> 2014-05-15 15:26 GMT+04:00 Tim Hutt <tdhutt at gmail.com>:
>
> 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.shienkov at 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 <tdhutt at 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 at qt-project.org
>>>> http://lists.qt-project.org/mailman/listinfo/qbs
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20140515/04a0c6f8/attachment.html>


More information about the Qbs mailing list