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

Reply via email to