[CMake] Approach to both shared and static lib (again, sorry)

Elvis Stansvik elvis.stansvik at orexplore.com
Sat May 19 18:55:14 EDT 2018


2018-05-19 21:49 GMT+02:00 Mateusz Loskot <mateusz at loskot.net>:
> On 19 May 2018 at 15:00, Elvis Stansvik <elvis.stansvik at orexplore.com> wrote:
>> I know this has been asked before, but I've never seen a really
>> authoritative answer.
>>
>> Say I have a simple single-library project.
>>
>> The advise I've seen is to not pass SHARED or STATIC to the
>> add_library(..), but instead let the user pass
>> -DBUILD_SHARED_LIBS:BOOL=ON/OFF to build the library as either shared
>> or static.
>>
>> That's fine, but leads to packagers having to do ugly things like e.g:
>>
>>     https://salsa.debian.org/hle/dlib/blob/master/debian/rules
>>
>> That is, do two separate configure/build/install, in order to get both
>> a shared and static version.
>
> IMHO, there is nothing ugly in this approach.
> Not every system allows (or recomments) to generate both,
> static and shared, from the same object files.

Alright. Yes I'm probably personally leaning towards just using the
recommended way, with a single add_library(..) and demand
reconfigure/rebuild/reinstall to get both variants. I was mostly
curious if you CMake pros on this list had some neat solution I hadn't
seen before.

Note that I wasn't necessarily suggesting building shared + static
from the same set of object files (which is indeed not recommended,
e.g. think of -fPIC), but just looking for best practices when having
CMake do the build of both libraries as part of the same build.

Elvis

> Why not view static vs shared as the similar to 32 vs 64 bit?
>
> Best regards,
> --
> Mateusz Loskot, http://mateusz.loskot.net
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake


More information about the CMake mailing list