Boost logo

Boost :

Subject: Re: [boost] Cmake
From: Edward Diener (eldiener_at_[hidden])
Date: 2017-06-24 20:18:29


On 6/24/2017 2:53 PM, Robert Ramey via Boost wrote:
> On 6/24/17 11:42 AM, Edward Diener via Boost wrote:
>> On 6/24/2017 1:05 PM, Peter Dimov via Boost wrote:
>>> P F wrote:
>>>> https://github.com/pfultz2/boost-cmake-demo/tree/bcm-demo
>>>>
>>>> The library for Boost.System is just:
>>>>
>>>> bcm_boost_package(system
>>>> VERSION 1.64
>>>> SOURCES
>>>> src/error_code.cpp
>>>> DEPENDS
>>>> assert
>>>> config
>>>> core
>>>> predef
>>>> )
>>>
>>> This certainly looks cleaner. It needs to distinguish between public
>>> and private dependencies but that's easy to fix. And of course
>>> there's the question who will maintain the version and the dependency
>>> list.
>>
>> Shouldn't this be generated on the fly ? The sources are all files in
>> the library's 'src' subdirectory and the dependencies come from your
>> own boostdep.
>
> I don't see that this is possible. Consider and example:
>
> a) I have and application A which uses the boost::date_time library.
> b) But it doesn't serialize dates/times So it doesn't include the
> date_time/serialization header
> c) So application is not dependent upon the serialization library
> d) And it doesn't have to include build / maintenance overhead that
> including the serialization library would entail.
>
> Later
>
> a) I make application B which used the boost::date_time library
> b) Part of the app also serializes date_time data
> c) So it includes date_time/serialization header
> d) And must be linked with the serialization compiled libraries.
>
> My point is that one cannot support the notion of dependencies between
> libraries outside of the context of a particular application.
>
> So dependencies will either have to specified/maintained by hand or one
> will need a tool which does something like
>
> dependencies A.cpp -> dependent libraries for application A
> dependencies B.cpp -> dependent libraries for application B

How is a library supposed to know what your application needs ? That is
not its responsibility. Doesn't CMake allow manipulation of what an
application needs at some higher level ? When I have used CMake to build
LLVM/Clang it certainly allowed me to choose what I wanted for my
particular build even though LLVM/CLang provide a whole slew of
CMakeLists.txt files. If we cannot setup CMake pretty easily for Boost
libraries so that the end-user can manipulate builds and tests for his
needs our CMake setup will be worthless.

>
> Robert Ramey


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