[QBS] Populate includes path to other products

Dmitry Volosnykh dmitry.volosnykh at gmail.com
Wed Jan 7 08:52:21 CET 2015


Glad to help you.

On Wed, Jan 7, 2015 at 10:47 AM, Andrey Anpilogov <anpilog at gmail.com> wrote:

> That was a holy grail!
>
> Thanks, you are awesome.
>
> 2015-01-07 15:42 GMT+08:00 Dmitry Volosnykh <dmitry.volosnykh at gmail.com>:
>
>> Do the following in your lib's Product item:
>>
>> Export {
>>     cpp.includePaths: "."
>> }
>>
>>
>> Besides, consider reading Export item's documentation for more info on
>> exporting.
>>
>> On Wed, Jan 7, 2015 at 10:34 AM, Andrey Anpilogov <anpilog at gmail.com>
>> wrote:
>>
>>> Thanks for advise, Dmitry.
>>>
>>> I've tried and id doesn't work.
>>> Same problem...
>>> I simplified test case. So now it's just qbs/examples/app-and-lib with
>>> one extra header file.
>>>
>>> ----------------------------------
>>> anpilog at Andriis-MacBook-Pro.local:~/git/cmake/test
>>> ➜ qbs profile:gcc
>>> Restoring build graph from disk
>>> Building for configuration gcc-debug
>>> compiling main.cpp
>>> ERROR: /usr/bin/g++ -m64 -g -Wall -Wextra -pipe -fvisibility=default
>>> -fPIC -c /Users/anpilog/git/cmake/test/app/main.cpp -o
>>> /Users/anpilog/git/cmake/test/gcc-debug/app-and-lib-app.gcc/.obj/main.cpp.o
>>> /Users/anpilog/git/cmake/test/app/main.cpp:2:10: fatal error: 'lib.h'
>>> file not found
>>> #include "lib.h"
>>>          ^
>>> 1 error generated.
>>> ERROR: Process failed with exit code 1.
>>> The following products could not be built for configuration gcc-debug:
>>> app-and-lib-app
>>> ----------------------------------
>>>
>>> Include folders from lib/lib.qbs are not passed to app/app.qbs.
>>>
>>> Besides I would expect some configurable way what headers to share from
>>> product...
>>>
>>> It's still confusing me a lot.
>>>
>>>
>>> 2015-01-07 15:19 GMT+08:00 Dmitry Volosnykh <dmitry.volosnykh at gmail.com>
>>> :
>>>
>>>> Andrey, I would suggest you to extract your "project" to a separate
>>>> .qbs file. So that your top-level qbs looks like below:
>>>>
>>>> import qbs
>>>>
>>>> Project {
>>>>     references: [
>>>>         "app/app.qbs",
>>>>         "lib/lib.qbs"
>>>>     ]
>>>> }
>>>>
>>>> Then in the app.qbs do:
>>>>
>>>> Depends { name: "lib" }
>>>>
>>>> Such setup works for me.
>>>>
>>>> PS. Don't know if mixing references with direct Product declarations is
>>>> good to go... Documentation says nothing about it.
>>>>
>>>> On Wed, Jan 7, 2015 at 9:59 AM, Andrey Anpilogov <anpilog at gmail.com>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I'm investigating qbs as possible replacement to Makefiles in my
>>>>> project.
>>>>> And it looks good except one thing: how to add include path from
>>>>> product to product?
>>>>>
>>>>> Let's take an example:
>>>>>
>>>>> project.qbs
>>>>> ---------------------------------------------
>>>>> import qbs 1.0
>>>>>
>>>>> Project {
>>>>>   references: [
>>>>>       "lib/build.qbs"
>>>>>   ]
>>>>>
>>>>>   Product {
>>>>>     name: "project"
>>>>>     type: "application"
>>>>>     files: "main.cpp"
>>>>>     Depends { name: "lib" }
>>>>>     Depends { name: "cpp" }
>>>>>   }
>>>>> }
>>>>> ---------------------------------------------
>>>>>
>>>>> lib/build.qbs
>>>>> ---------------------------------------------
>>>>> import qbs 1.0
>>>>>
>>>>> Product {
>>>>>    name: "lib"
>>>>>    type: "staticlibrary"
>>>>>
>>>>>    files: ["file1.cpp", "file2.cpp"]
>>>>>    cpp.includePaths: ["api", "ppi", "xdi"]
>>>>>    cpp.defines:          ["xxx", "zzz"]
>>>>>    cpp.cxxFlags:       ["xxx", "zzz"]
>>>>>    cpp.cFlags:           ["xxx", "zzz"]
>>>>>    cpp.commonCompilerFlags: ["-Os", "-gdwarf-2", "-Wall"]
>>>>>    cpp.linkerScripts: "xxx"
>>>>>    Depends { name: "cpp" }
>>>>> }
>>>>> ---------------------------------------------
>>>>>
>>>>> It's quite similar to qbs/examples/app-and-lib example.
>>>>> The problem is that project/main.cpp can't include headers from 'lib'
>>>>> folder due to qbs doesn't add any include path from product:lib.
>>>>> I've looked over docs and cpp profile and could not find anything
>>>>> better then manually add includes into application product:
>>>>>
>>>>> ---------------------------------------------
>>>>> import qbs 1.0
>>>>> Project {
>>>>>   references: [ "lib/build.qbs" ]
>>>>>
>>>>>   Product {
>>>>>     name: "project"
>>>>>     type: "application"
>>>>>     //...
>>>>>     cpp.includePaths: "lib"
>>>>>   }
>>>>> }
>>>>> ---------------------------------------------
>>>>>
>>>>> And it looks quite strange to me. If I add reference and make product
>>>>> depended from other product I would expect I can pass not only static
>>>>> libraries to dependant product but also headers path...
>>>>>
>>>>> Or there is some other approach?
>>>>>
>>>>> Regards.
>>>>>
>>>>> _______________________________________________
>>>>> QBS mailing list
>>>>> QBS at qt-project.org
>>>>> http://lists.qt-project.org/mailman/listinfo/qbs
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> --
>>> WBR,
>>>   Andrii Anpilogov
>>>   Phone: +86 186-1660-3720
>>>   Skype: anpilogov.andrey
>>>   mailto:anpilog at gmail.com, andrii.anpilogov at mesheven.com
>>>
>>>
>>
>
>
> --
> --
> WBR,
>   Andrii Anpilogov
>   Phone: +86 186-1660-3720
>   Skype: anpilogov.andrey
>   mailto:anpilog at gmail.com, andrii.anpilogov at mesheven.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20150107/a1ed9750/attachment.html>


More information about the Qbs mailing list