On Jul 29, 2017, at 4:02 AM, Peter Dimov via Boost
wrote: Louis Dionne wrote:
If we go Paul's way (which is IMHO the right way in the long term), ...
I've given it some thought and I like the BCM approach; BCM should be a library in libs/bcm (if we retain the name).
Except bcm is not added as a subdirectory in cmake.
But I think that Paul's insistence to support the cget workflow, for which nobody at the moment cares but him, is making things more complicated and error-prone than they could be. (The cget workflow is the ability to build and install Boost libraries one by one, independently of one another, without a superproject; this requires them to refer to one another with find_package.)
Its not really the cget workflow, it definitely does not have that much influence in the open source world, it just follows how the open source world handles dependencies, which is why it works out-of-the-box for so many libraries. Either way, several authors has expressed their desire to have their libraries built standalone, which means they would need to use `find_package` to get their dependencies. Furthermore, if a library only needs a few dependencies, it seems easier to just download and install, instead of downloading them, downloading a super project, placing them in the superproject, and then installing. I think the error-prone is coming from repeating the dependencies twice. We could support, something like: bcm_target_depends(boost_assert PACKAGE boost_assert INTERFACE boost::assert ) Or maybe even read it from a file. This should reduce the error-prone, and hopefully its not too opaque for cmake users.