Boost logo

Boost :

From: Deniz Bahadir (deniz.bahadir_at_[hidden])
Date: 2021-06-05 10:27:17


Am 05.06.21 um 03:43 schrieb Peter Dimov via Boost:
> Deniz Bahadir wrote:
>> Am 04.06.21 um 03:57 schrieb Glen Fernandes via Boost:
>>> On Thu, Jun 3, 2021 at 9:27 PM Peter Dimov wrote:
>>>> friendlyanon: 3.14
>>>> Glen Fernandes: 3.14
>>>> Niall Douglas: 3.8 or 3.9
>>>> Alexander Grund: 3.13 or 3.14?
>>>> Mike: 3.13 or 3.15
>>>> Deniz Bahadir: 3.13
>>>> Andrey Semashev: 3.7? 3.10?
>>>>
>>>> Have I got everyone's "vote" right?
>>> Paul (Bristow) effectively suggested 3.20+.
>>>
>> So would I.
>> The 3.13 is just the bare minimum I warn to never go below.
> Can we think of a specific feature in 3.16 or newer that we'd
> like very much to have? I have good arguments for 3.13, 3.14
> and 3.15, but above that, can't think of anything at the moment.

I do not know if you'd like to have the following features "very much",
but these stand out to me:

* for 3.16:
 Â  * `target_precompile_headers()` command was added.
 Â  * `BUILD_RPATH` / `INSTALL_RPATH` target properties now support
generator expressions.
 Â  * `FindPython` and `FindPython3` modules gained options to control
which ABIs will be searched.
 Â  * CPack now supports multiple configurations.

* for 3.17:
 Â  * `cmake` gained the "Ninja Multi-Config" generator.
 Â Â Â  * However, this is nice for the user but irrelevant for determining
the minimum CMake version for Boost.
 Â  * `target_compile_options()` command now honors the `BEFORE` keyword
more consistently.
 Â  * The `DEPRECATION` target property was added.

* for 3.18:
 Â  * `add_library` / `add_executable` commands can now create `ALIAS`
targets referencing non-`GLOBAL` `IMPORTED` targets.
 Â  * Creation of an `ALIAS` target overwriting an existing target now
raises an error.
 Â  * `get_property()` / `set_property()` with `SOURCE` gained the
`DIRECTORY` and `TARGET_DIRECTORY` options to get/set property from the
provided directory scope.
 Â  * The same for `get_source_file_property()` /
`set_source_file_properties()`.
 Â  * The `FetchContent` module `FetchContent_Declare()` command now
supports a `SOURCE_SUBDIR` option.

* for 3.19:
 Â  * The `add_test` command now supports whitespace and other special
characters in the name for tests it creates.
 Â  * The `find_package()` command can now handle a version range.
 Â  * The `file()` command was extended with a lot of functionality.
 Â  * `file(GENERATE)` was fixed.
 Â  * The `string()` command gained a set of new `JSON` sub command that
provide JSON parsing capabilities.
 Â  * `FindPython` / `FindPython2` / `FindPython3` gained ability to
handle a version range.
 Â  * `INTERFACE` libraries may now have source files (*.cpp) added.
 Â  * Fixes error of `install(EXPORT)` in certain situations.
 Â  * Fix handling `OBJECT` libraries when using "Ninja Multi-Config"
generator.

* for 3.20:
 Â  * The `GENERATED` source-file property is now visible from any
directory scope.
 Â  * `add_custom_command()` / `add_custom_target()` now support
generator expression in their `OUTPUT` and `BYPRODUCTS` options.
 Â  * `add_library()` can now handle `IMPORTED` `OBJECT` libraries with
multi-architecture configurations. (Mostly affected: Xcode generator
when targeting iOS)
 Â  * `target_include_directories()` command gained `AFTER` keyword.
 Â  * `target_sources` now works with targets created by
`add_custom_target()`.
 Â  * Compile feature `cxx_std_23` was introduced.
 Â  * CPack `DEB` generator now has advanced support for the
`dpkg-shlibdeps` program.
 Â  * Source file extensions must now be explicit. (CMP0115)

Personally, I value the following features from (CMake 3.18 to 3.20)
quite high:

* from 3.18:
 Â  * `add_library` / `add_executable` commands can now create `ALIAS`
targets referencing non-`GLOBAL` `IMPORTED` targets.
 Â  * Creation of an `ALIAS` target overwriting an existing target now
raises an error.
* from 3.19:
 Â  * Fix handling `OBJECT` libraries when using "Ninja Multi-Config"
generator.
 Â  * The `add_test` command now supports whitespace and other special
characters in the name for tests it creates.
 Â  * `file(GENERATE)` was fixed.
 Â  * Fixes error of `install(EXPORT)` in certain situations.
* from 3.20:
 Â  * The `GENERATED` source-file property is now visible from any
directory scope.
 Â  * `add_library()` can now handle `IMPORTED` `OBJECT` libraries with
multi-architecture configurations. (Mostly affected: Xcode generator
when targeting iOS)
* `target_sources` now works with targets created by `add_custom_target()`.
 Â  * CPack `DEB` generator now has advanced support for the
`dpkg-shlibdeps` program.

> There are undocumented things fixed here and there, such as
> list(REMOVE_DUPLICATES failing on empty lists with a fatal
> error, but I don't remember which version fixed that.
>
Sorry, neither do I.

Deniz

-- 
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