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.