Boost logo

Boost :

Subject: Re: [boost] Request for a "Policy Review" regarding 'CMakeLists.txt'
From: Mikhail Strelnikov (mikhail.strelnikov_at_[hidden])
Date: 2016-05-16 11:47:34

> * 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 is boost/libs/hana/ 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".

Boost list run by bdawes at, gregod at, cpdaniel at, john at