Glen Fernandes wrote:
On Sun, Jun 6, 2021 at 9:12 PM Peter Dimov via Boost <boost@lists.boost.org> wrote:
Some libraries (I encountered this when porting the tests of Signals2) use Boost.Test in header-only mode, by including <boost/test/included/unit_test.hpp> without linking to anything. This worked in the "legacy" structure where all headers are always available, but doesn't work under CMake where you have to link to header-only libraries in order to get the proper include path.
Should we make an attempt to support this use by declaring a special header-only target in Boost.Test (e.g. Boost::included_unit_test), or is that a waste of time? One can as well link to the proper Boost::unit_test_framework (and then even use it header-only, although there's not much point in doing so.)
I'm inclined towards "waste of time".
Likewise.
What is the list of libraries that do this? I'm curious if most of them are unmaintained or would otherwise be better served migrating to LWT.
The libraries that use the "included/" versions of the Test libraries are actually the maintained ones, because the unmaintained ones are still on the deprecated <boost/test/minimal.hpp>. :-) The `included` ones are algorithm filesystem geometry heap lockfree math mpi numeric/conversion numeric/odeint numeric/ublas process ptr_container random range signals2 sort type_traits uuid yap so this is widely used, and in fairness, it's a legitimate and documented way to use Boost.Test. I don't think we need to change anything in the libraries, but I also don't think we need to duplicate the Boost.Test CMake targets to make them have header-only versions. Linking to the normal target will also enable the header-only use to compile. For completeness, the libraries using the deprecated boost/test/minimal.hpp are: foreach graph graph_parallel iterator logic numeric/conversion numeric/interval property_map tokenizer units yap These need to migrate to either LWT or the non-deprecated Boost.Test.