[build2] C++ modules: how to generate the modules-list for own library
Wilhelm Meier
wilhelm.meier at hs-kl.de
Mon May 8 15:14:21 UTC 2023
Hi Boris,
On 08.05.23 15:31, Boris Kolpackov wrote:
> Wilhelm Meier <wilhelm.meier at hs-kl.de> writes:
>
>> I want to convert a own header-only library to a version using modules.
>> Because it is a header-only library (mostly templates) I'm using module
>> interface unit as *.cpp files in some directory structure. Seldom I split a
>> module in module-partitions with more than one *.cpp file.
>>
>> If I want to use this modules, the build-tool needs a mapping between module
>> names an the corresponding *.cpp files of our library.
>
> Is this header-only library built with build2? If so, you (normally)
> don't need an explicit mapping. For example, if your module interface
> is in foo.cpp, then (normally) all you need is:
>
> lib{foo}: mxx{foo.cpp}
Well, our library contains a bunch of header files and I try to convert
the library as follows:
* I convert every .h file to .mpp (module interface unit) with the
neccesary module statements.
* As every file comprises a part of the library, I export a
module:partition in every .mpp file
* Clearly the partitions are dependent, so I have to import (export)
partitions of other .mpp files in some .mpp files
So, the .mpp files are interdependent.
Therefore I have one .mpp file that imports all the module:partitions in
the right order. The order is crucial.
To use this library one has to import the module, but to to that, he
hast to compile all the partitions of the module, which are in the ather
files. This ends, that the user has to build all the partitions before
in the right order.
Well, this looks broken to me.
Can build2 solve this?
Regards,
Wilhelm
More information about the users
mailing list