[Qbs] How to provide an "export" header

Björn Schäpers qt-maillist at hazardy.de
Sat Jul 13 22:08:48 CEST 2024


My point is: Before just the exporting product needed to depend on the module 
which generated the header by a single depends and setting one property on the 
module.
Now the product still depends on the module, sets the property, but also has to 
state something in its Export section. More (repetitive) work for the same goal.

Currently qbs keeps on breaking stuff, which can be worked around, but that 
leads to more work.
* The removal of the fallback provider: Yeah okay, maybe qbspkgconfig is 
superior, but the fallback just worked without providing qbsModuleProviders, I 
think that is superior in the usage.
* Now I can't generate files outside the build directory anymore, but what did 
we gain?
* And as I understood from the recent commits Export { cpp.includePaths: 
["include"] } has to be changed to [exportingProduct.sourceDirectory + 
"/include" or similar. I also see no gain for the users, only pain.

Am 13.07.2024 um 15:26 schrieb Иван Комиссаров:
> You can add it once to the base item of the products (possibly with some 
> customisation using a prop). Usually there is already such an item in every 
> product.
>
> Ivan
>
>> 13 июля 2024 г., в 14:13, Björn Schäpers <qt-maillist at hazardy.de> написал(а):
>>
>> Am 13.07.2024 um 02:15 schrieb Иван Комиссаров:
>>>
>>>> 12 июля 2024 г., в 23:24, Björn Schäpers<qt-maillist at hazardy.de>  написал(а):
>>>>
>>>> Hi,
>>>>
>>>> I have multiple dynamic libraries in my project tree, and use an export header similar to your qbs_export.h. Overtime the style of those headers had changed a bit and recently I replaced them by something generated from qbs. I generated them in the source directory, so that #include "export.hpp" just worked and even worked for the depending products.
>>>>
>>>> Now (since 67af0c9517b01c482f425a6761b1cf38c486d3c3) that's not possible anymore, I understand the reasoning, but now I don't know how to solve the issue. If I generate the file in the build directory I'd have to add it to the include path, that's easy from the module. But how to add it to the include path from products depending on the dynamic library? And even further on products depending on those? The header did just propagate indefinitely, is there a way to achieve similar things with properties? In that case I even would exchange the header with just cpp.defines.
>>> That’s what Export item for
>>>
>>> DynamicLibrary {
>>>      // library stuff here
>>>      Export {
>>>           Depends { name: «cpp» }
>>>           cpp.includePaths: FileInfo.joinPaths(exportingProduct.buildDirectory, «path», «to», «headers»)
>>>      }
>>> }
>>>
>>
>> I know what Export does, but the point is, I have to add that to all my 50+ 
>> products.
>> Although I've had an error in my thoughts. Of course this will work.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20240713/336df774/attachment.htm>


More information about the Qbs mailing list