[QBS] Functions in QBS scripts and accessing properties from them.
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] Project directory variable.
Is there a way to get the directory that the QBS file is in, i.e. like buildDirectory, but for the source? ___ QBS mailing list QBS@qt-project.org http://lists.qt-project.org/mailman/listinfo/qbs
[QBS] asmFlags
How can I specify assembler flags? cpp.asmFlags does not work. ___ QBS mailing list QBS@qt-project.org http://lists.qt-project.org/mailman/listinfo/qbs
Re: [QBS] Functions in QBS scripts and accessing properties from them.
On 05/15/2014 10:30 AM, Tim Hutt wrote: 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). Are you sure that's really what you want? Toolchain information typically comes from the outside via a profile, and then it just works automatically and its properties are available via the cpp module. Unless you use your toolchain in a very special way (i.e. not to compile your sources), then your current approach is probably wrong. Christian 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
Re: [QBS] Project directory variable.
On 05/15/2014 10:46 AM, Tim Hutt wrote: Is there a way to get the directory that the QBS file is in, i.e. like buildDirectory, but for the source? There is the path property that gives you the directory the current file is in. In qbs 1.3, the Project item will also have a sourceDirectory property indicating where the top-level project is located. Christian ___ QBS mailing list QBS@qt-project.org http://lists.qt-project.org/mailman/listinfo/qbs
Re: [QBS] Functions in QBS scripts and accessing properties from them.
Well I guess it is fairly special - I'm compiling stuff for a microcontroller using gcc for arm embedded. It needs specific flags and linker scripts and so on. Is there any documentation on profiles? The only thing I could find was on listing them with the qbs binary which I don't have (since I'm using Qt Creator). If I made a profile would I be able to make it automatically find the arm gcc, and could I distribute it with my code easily? Thanks for the info Denis! On 15 May 2014 10:33, Christian Kandeler christian.kande...@digia.comwrote: On 05/15/2014 10:30 AM, Tim Hutt wrote: 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). Are you sure that's really what you want? Toolchain information typically comes from the outside via a profile, and then it just works automatically and its properties are available via the cpp module. Unless you use your toolchain in a very special way (i.e. not to compile your sources), then your current approach is probably wrong. Christian 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 ___ QBS mailing list QBS@qt-project.org http://lists.qt-project.org/mailman/listinfo/qbs
Re: [QBS] Functions in QBS scripts and accessing properties from them.
Well I guess it is fairly special - I'm compiling stuff for a microcontroller using gcc for arm embedded. As I know, you can create a custom *.config file in which to specify paths to your toolchain, and then pass to qbs this your config file. Then qbs will take your profile as default profile.. If I am not mistaken... PS: For me too very interestingly any HOWTO for setup of custom toolchain/profile for qbs. So, I also join to this question. :) BR, Denis 2014-05-15 13:44 GMT+04:00 Tim Hutt tdh...@gmail.com: Well I guess it is fairly special - I'm compiling stuff for a microcontroller using gcc for arm embedded. It needs specific flags and linker scripts and so on. Is there any documentation on profiles? The only thing I could find was on listing them with the qbs binary which I don't have (since I'm using Qt Creator). If I made a profile would I be able to make it automatically find the arm gcc, and could I distribute it with my code easily? Thanks for the info Denis! On 15 May 2014 10:33, Christian Kandeler christian.kande...@digia.comwrote: On 05/15/2014 10:30 AM, Tim Hutt wrote: 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). Are you sure that's really what you want? Toolchain information typically comes from the outside via a profile, and then it just works automatically and its properties are available via the cpp module. Unless you use your toolchain in a very special way (i.e. not to compile your sources), then your current approach is probably wrong. Christian 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 ___ 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
Re: [QBS] Functions in QBS scripts and accessing properties from them.
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