VERSION

共享库目标的版本号。

对于共享库,可以使用 VERSIONSOVERSION 分别指定构建版本和 ABI 版本。当构建或安装时,如果平台支持符号链接且链接器支持 so-names,则会创建适当的符号链接。如果仅指定了其中一个,则假定缺失的版本号与已指定的相同。对于可执行文件,可以使用 VERSION 指定构建版本。当构建或安装时,如果平台支持符号链接,则会创建适当的符号链接。

一个常见的约定是同时指定 VERSIONSOVERSION,使得 SOVERSIONVERSION 的第一个组成部分匹配

set_target_properties(mylib PROPERTIES VERSION 1.2.3 SOVERSION 1)

其理念是,对 ABI 的破坏性更改会同时增加 SOVERSION 和主要的 VERSION 号。

Windows 版本

对于 Windows 上的共享库和可执行文件,将解析 VERSION 属性以提取 <major>.<minor> 版本号。这些数字用作二进制文件的镜像版本。

Mach-O 版本

对于 Mach-O 系统(例如 macOS、iOS)上的共享库和可执行文件,SOVERSION 属性对应于兼容性版本,而 VERSION 对应于当前版本(除非提供了 Mach-O 特定的覆盖,如下所述)。有关示例,请参见 FRAMEWORK 目标属性。

对于共享库,MACHO_COMPATIBILITY_VERSIONMACHO_CURRENT_VERSION 属性可用于分别覆盖兼容性版本当前版本。请注意,SOVERSION 仍将用于形成 install_name,并且 SOVERSIONVERSION 也可能影响文件和符号链接名称。

可以使用 otool -L <binary> 命令检查 Mach-O 二进制文件的版本。