On 09/06/2012 10:05 AM, Benjamin Eikel wrote: > Am Donnerstag, 6. September 2012 um 10:01:36 schrieb Michael Wild: >> On 09/06/2012 09:43 AM, Anton Sibilev wrote: >>> Hi all! >>> >>> I'm making shared library with add_library(xxx SHARED xxx.c) and as >>> result I got 'libxxx.so'. >>> I want to create lib with name like 'libxxx.so.1', can you please help, >>> how to make this? >>> >>> Point is not to create link or copy libxxx.so -> libxxx.so.1, but to >>> create it initially. >>> >>> Thanks! >> >> You need to set the VERSION and SOVERSION target properties: >> >> http://cmake.org/cmake/help/v2.8.8/cmake.html#command:set_target_properties > > Right. One example: > > set(MYLIB_VERSION_MAJOR 0) > set(MYLIB_VERSION_MINOR 1) > set(MYLIB_VERSION_PATCH 1) > set(MYLIB_VERSION_STRING > ${MYLIB_VERSION_MAJOR}.${MYLIB_VERSION_MINOR}.${MYLIB_VERSION_PATCH}) > > set_target_properties(MyLib PROPERTIES VERSION ${MYLIB_VERSION_STRING} > SOVERSION ${MYLIB_VERSION_MAJOR}) >
As an added remark: The SOVERSION is not necessarily the same as the major version. The rule is that any breakage of the ABI must be indicated by incrementing the SOVERSION. So, adding e.g. functions is no problem, modifying argument lists or removing functions would required the SOVERSION to be incremented. Similar rules hold of course for non-opaque data-structures. For C++ the whole issue is infinitely more complicated, as determining whether the ABI was changed in an incompatible way is AFAIK nearly impossible. Michael -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake