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.