[cmake-developers] Shared libraries

REIX, Tony tony.reix at atos.net
Tue Aug 21 12:20:44 EDT 2018


Hi Chuck,


Thanks for the information.


We launch cmake on MariaDB code with:

   -DBUILD_SHARED_LIBS=true


Moreover, here are the few places in MariaDB code where BUILD_SHARED_LIBS appears:

# grep -R BUILD_SHARED_LIBS *
CMakeCache.txt:BUILD_SHARED_LIBS:UNINITIALIZED=true
pcre/CMakeLists.txt:# IF(NOT BUILD_SHARED_LIBS)
pcre/CMakeLists.txt:# ENDIF(NOT BUILD_SHARED_LIBS)
pcre/CMakeLists.txt:#  MESSAGE(STATUS "  Build shared libs ............... : ${BUILD_SHARED_LIBS}")
plugin/aws_key_management/CMakeLists.txt:    -DBUILD_SHARED_LIBS=OFF


What does the first line means ?


Thx/Regards,



Cordialement,

Tony Reix

tony.reix at atos.net

ATOS / Bull SAS
ATOS Expert
IBM Coop Architect & Technical Leader
Office : +33 (0) 4 76 29 72 67
1 rue de Provence - 38432 Échirolles - France
www.atos.net<https://mail.ad.bull.net/owa/redir.aspx?C=PvphmPvCZkGrAgHVnWGsdMcDKgzl_dEIsM6rX0g4u4v8V81YffzBGkWrtQeAXNovd3ttkJL8JIc.&URL=http%3a%2f%2fwww.atos.net%2f>


________________________________
De : Chuck Atkins <chuck.atkins at kitware.com>
Envoyé : mardi 21 août 2018 18:02
À : REIX, Tony
Cc : CMake Developers
Objet : Re: [cmake-developers] Shared libraries

Hi Tony,

I expect what your seeing is likely the result of how MaraiaDBhas specifically implemented their CMake build.  The only builtin CMake variable to control this is BUILD_SHARED_LIBS, which when set to "ON" changes the behavior of add_library(foo) to be add_library(foo SHARED), instead of the default add_library(foo STATIC).  The other BUILD_STATIC_LIBS and DISABLE_SHARED are variables are not builtin to CMake and are part of however they have chosen to implement their build.

CMake builds are typically designed to produce a single configuration, i.e. shared release or static debug, etc.  Often, however, because to have the flexibility to do otherwise. projects will try to instead implement a build that produces several configurations in a single pass.  It seems this is what MariaDB has done and as such the variables to control it will be unique and specific to that project and how they've decided to implement it.

----------
Chuck Atkins
Staff R&D Engineer, Scientific Computing
Kitware, Inc.


On Thu, Aug 9, 2018 at 12:23 PM REIX, Tony <tony.reix at atos.net<mailto:tony.reix at atos.net>> wrote:

Hi,


On AIX, when building MongoC 1.11, cmake 3.11.4 generates lib*.so files and lib*.a files which contain .o files.

On AIX, we should get libraries lib*.a containing the lib*.so file.

I've tried to use:

    -DBUILD_SHARED_LIBS=ON              \
    -DBUILD_STATIC_LIBS=OFF \
    -DCMAKE_C_CREATE_SHARED_LIBRARY=ON  \
    -DCMAKE_CXX_CREATE_SHARED_LIBRARY=ON
and I see that, for MariaDB, someone has tried with:

    -DDISABLE_SHARED=OFF


None seems to work.


Which CMake variable should I use for asking CMAKE to generate shared libraries rather than static ones: lib*.a file containing .so files rather than .o files.


Thanks


Cordialement,

Tony Reix

tony.reix at atos.net<mailto:tony.reix at atos.net>

ATOS / Bull SAS
ATOS Expert
IBM Coop Architect & Technical Leader
Office : +33 (0) 4 76 29 72 67
1 rue de Provence - 38432 Échirolles - France
www.atos.net<https://mail.ad.bull.net/owa/redir.aspx?C=PvphmPvCZkGrAgHVnWGsdMcDKgzl_dEIsM6rX0g4u4v8V81YffzBGkWrtQeAXNovd3ttkJL8JIc.&URL=http%3a%2f%2fwww.atos.net%2f>
--

Powered by www.kitware.com<http://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-developers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake-developers/attachments/20180821/b0849135/attachment-0001.html>


More information about the cmake-developers mailing list