AMDG On 10/15/2018 09:20 PM, Peter Dimov via Boost wrote:
Louis Dionne wrote:
Would it be possible to have one Boost::XYZ library for each header-only library XYZ?
It's possible in principle; my first iteration did have targets for all libraries. I'd however prefer to get a release out using this scheme first, to see how it fares in the field.
There are several possible approaches we could adopt if we want targets for all libraries, and the one I like is to go full modular and add build/Jamfiles to header-only libraries, with stage and install targets that link/copy the headers. So that you could `b2 --prefix=~/.local install-hana` from top level and get, in ~/.local/include, Hana's headers and the headers of its dependencies, and in ~/.local/lib/cmake, the config files of same.
+1
For this to work, we need to change our releases to no longer delete libs/$lib/include, as I mentioned.
It's not strictly necessary, as long as there's some way to enumerate the headers belonging to a specific library. (Obviously doing a glob-tree in libs/$lib/include is the most convenient way to do so.)
Also, we need to fix our circular dependencies. This may take a while. :-)
It might be easier in the short term to make Boost.Build handle circular dependencies (in some cases). I already have a pretty good idea of how to do it, as I implemented support for circular #includes in the jam scanner. The required semantics in this case are pretty simple: If any library in the cycle is installed/staged, then all of them are. In Christ, Steven Watanabe