Boost logo

Boost :

Subject: Re: [boost] Follow-up to the follow-up of the CMake follow-up
From: Louis Dionne (ldionne.2_at_[hidden])
Date: 2017-07-13 19:58:20


> On Thu, 2017-07-13 at 10:55 -0700, Louis Dionne via Boost wrote:
>> >
>> > In branch feature/install-cmake-config-2 of the superproject, you can
>> > find 
>> > an improved version of the award-winning work presented in my previous 
>> > follow-up. This one integrates into the top-level "b2 install" and "b2 
>> > stage" and installs (or, respectively, stages) the CMake configuration
>> > files 
>> > necessary for find_package to work.
>> >
>> > [...]
>> I think this is a very good start! It shows that we can automate part of
>> the
>> process of creating the CMake XYZConfig.cmake files for existing
>> libraries,
>> which is nice. However, the resulting XYZConfig files are not always
>> sufficient,
>> for example Boost.Interprocess, which requires additional libraries to
>> link.
>> Specifically, the config file for Boost.Interprocess would need to
>> specify 
>> something along the lines of:
>>
>>   if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") 
>>     target_link_libraries(boost_interprocess INTERFACE -lrt)
>>   endif() 
>
> Actually, using the scripts I have here:
>
> https://github.com/pfultz2/boost-cmake
>
> This will let you inject extra cmake code for projects. That's how I
> generate
> code for Boost.Context, which needs a lot of custom work. The same could
> be
> done for Boost.Interprocess. Its fairly simple to add if you would like to
> add
> your patches.
>
> It currently can build all of boost, but there is some more work that
> needs to
> be done, including adding more tests, and disabling libraries such as MPI
> or
> Python that need external dependencies.

I looked quickly at your solution, and it appears that you're writing quite
a bit of custom CMake code (and I don't see how things could be any
different).
This also appears to be missing some things like the fact that Hana has a
requirement on C++14:

  target_compile_features(hana INTERFACE cxx_std_14)

Or are you reusing Hana's CMakeLists.txt? I'm not sure that's going to work
out of the box, since I have not written Hana's CMakeLists.txt with the idea
that one would use it through add_subdirectory.

I think your (and Peter's) tools are really cool and they show us how we can
use tooling to help us migrate if/when we decide to do so. In the end, I do
believe we'd have some manual work to do, but that's fine IMO.

Louis

--
View this message in context: http://boost.2283326.n4.nabble.com/Follow-up-to-the-follow-up-of-the-CMake-follow-up-tp4696488p4696811.html
Sent from the Boost - Dev mailing list archive at Nabble.com.

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