Boost logo

Boost :

From: Deniz Bahadir (deniz.bahadir_at_[hidden])
Date: 2021-06-03 09:37:39


Am 02.06.21 um 18:32 schrieb Peter Dimov via Boost:
> I suppose the time has come to have the discussion on
> the minimum CMake version we will support for building
> Boost. Currently that's set to 3.5, which kind of works, but
> is fairly inconvenient.
>
> The interesting options are
>
> - CMake 3.8: required for use of the compile features
> cxx_std_11, cxx_std_14, cxx_std_17, etc. Also allows
> source_group(TREE, which is used by Json and
> PropertyTree.
>
> - CMake 3.9: required by Nowide, I'm not sure why.
> Also, required for FindMPI to define an imported
> target. Building Boost.MPI is optional though.
>
> - CMake 3.13: required for Boost installation support.
>
> - CMake 3.14: required for FindPython to be modern
> enough to make building Boost.Python reasonably
> easy. (Building Boost.Python is optional, though.)
>
> There are also less important nice-to-have things such as
>
> - CMake 3.10: adds include_guard()
> - CMake 3.12: adds CONFIGURE_DEPENDS to file(GLOB
> - CMake 3.15: adds VERBOSE/DEBUG to message(
>
> Opinions?

I never understood why users were so lazy to get the latest CMake
version and insist on using old, outdated and buggy versions which were
supplied with older Linux distributions.
I always recommend to users to use the latest CMake version. (They are
very good with keeping backwards-compatibility.)
Kitware provides binaries for Windows, Mac and Linux and even has an APT
repository for Debian-based Linux distributions. And even building CMake
oneself is also quite simple.

If Boost is really hesitant to require this of its users I recommend to
collect the features that you need and require at least the latest
version of CMake which brings in these features.

Something I always recommended was to go with at least CMake 3.13.
This one is able to treat OBJECT library targets (almost) identical to
other types of CMake targets and also contains some
simplifications/unifications to the `target_*` commands.

If, however, for example generated files are used and therefore the
`GENERATED` property, I recommend to take at least CMake 3.20, because
that one makes it possible to see that property from any directory.

My 2 ct.
Deniz

PS: A short note/disclaimer: I know about and especially mentioned these
specific features, because I provided them to CMake. (I needed them and
they were missing from CMake.)

-- 
BENOCS GmbH
Dipl.-Inform. Deniz Bahadir
Reuchlinstr. 10 D
10553 Berlin
Germany
Phone: +49 - 30 / 577 0004-22
Email: deniz.bahadir_at_[hidden]
www.benocs.com
Board of Management: Stephan Schroeder, Dr.-Ing. Ingmar Poese
Commercial Register: Amtsgericht Bonn HRB 19378

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk