SOVERSION¶
共享库目标的 ABI 版本号。
对于共享库 VERSION
和 SOVERSION
可用于分别指定构建版本和 ABI 版本。在构建或安装时,如果平台支持符号链接并且链接器支持 so 名称,则会创建相应的符号链接。如果仅指定其中一个,则会假定缺失的版本具有相同的版本号。如果 NO_SONAME
属性被设置,则 SOVERSION
将被忽略。
一个常见的约定是同时指定 VERSION
和 SOVERSION
,使得 SOVERSION
匹配 VERSION
的第一个组件
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_VERSION
和 MACHO_CURRENT_VERSION
属性可用于分别覆盖兼容版本和当前版本。请注意 SOVERSION
仍将用于生成 install_name
,并且 SOVERSION
和 VERSION
也可能会影响文件和符号链接的名称。
Mach-O 二进制文件的版本可以用 otool -L <binary>
命令进行检查。