SOVERSION¶
ABI version number of a shared library target.
For shared libraries VERSION
and SOVERSION
can be used to
specify the build version and ABI version respectively. When building or
installing appropriate symlinks are created if the platform supports
symlinks and the linker supports so-names. If only one of both is
specified the missing is assumed to have the same version number.
SOVERSION
is ignored if NO_SONAME
property is set.
A common convention is to specify both VERSION
and SOVERSION
such that SOVERSION
matches the first component of VERSION
:
set_target_properties(mylib PROPERTIES VERSION 1.2.3 SOVERSION 1)
The idea is that breaking changes to the ABI increment both the
SOVERSION
and the major VERSION
number.
Windows Versions¶
For shared libraries and executables on Windows the VERSION
attribute is parsed to extract a <major>.<minor>
version number.
These numbers are used as the image version of the binary.
Mach-O Versions¶
For shared libraries and executables on Mach-O systems (e.g. macOS, iOS),
the SOVERSION
property corresponds to the compatibility version and
VERSION
corresponds to the current version (unless Mach-O
specific overrides are provided, as discussed below).
See the FRAMEWORK
target property for an example.
For shared libraries, the MACHO_COMPATIBILITY_VERSION
and
MACHO_CURRENT_VERSION
properties can be used to
override the compatibility version and current version respectively.
Note that SOVERSION
will still be used to form the install_name
and both SOVERSION
and VERSION
may also affect the file
and symlink names.
Versions of Mach-O binaries may be checked with the otool -L <binary>
command.