* Several libraries, such as Boost.Hana and Boost.Spirit, have two distribution mechanisms: one as distributed with Boost and the other as an independent package.
What if header-only library A is using Hana from Boost 1.61 and header-only library B is using independent Hana released in 2017? Will this violate ODR (if compile at all) if both A and B are used in the same application?
The requirement that these libraries not include a 'CMakeLists.txt' as part of their Boost distribution creates a maintenance burden for authors or otherwise hurts usability of the independent distribution.
Hana does already include CMakeLists.txt in 1.61, why is that? Why header-only library such as Hana needs a build script that is 5 pages long (plus walls of text in cmake directory)? Bjam does support header-only libraries and does not require much from library author. If you have 1.61 extracted, navigate to boost/libs/hana/CMakeLists.txt line 105 and please tell me why library included in Boost 1.61 is trying to search for Boost 1.59? Do you want every Boost library to search their own version of Boost? It requires CMake 3.0 released in 2014 and searches for Boost 1.59 released in 2015 - this is not going to work. Best FindBoost.cmake has to offer is 1.56. What BOOST_HANA_HAS_WEXTRA does? What is boost/libs/hana/LICENSE.md doing? Is this legal? * Several companies have revealed that they are building Boost with
their own custom CMake scripts. The suggested policy change would enable authors to relieve the infrastructure cost of their CMake users and unify how their library is built.
I have opposite experience by replacing dozens of CMake scripts with one tiny Jamfile.
* CMake is, by far, the most popular build system for C++. Allowing authors to support CMake users in addition to BJam will help the Boost ecosystem to grow and thrive by lowering the barriers to access.
IMHO, CMakeLists.txt looks ugly as everything in camel starting with C. There are lots of Boost libraries having only "index.html" in their top-level directory, look, there is a pattern here and I'm not sure this should be uglified. I don't care too much about popularity, but Bjam/BB does support C++ much better than CMake. It has, for example, "usage-requirements".