版本¶
共享库目标的版本号。
对于共享库 VERSION
和 SOVERSION
分别用于指定构建版本和 ABI 版本。在构建或安装时,如果平台支持符号链接且链接器支持 so 名称,将创建适当的符号链接。如果只指定了这两个版本号中的一个,则假设另一个版本号与其相同。对于可执行文件,VERSION
可以用于指定构建版本。在构建或安装时,如果平台支持符号链接,将创建适当的符号链接。
一个通用的约定是同时指定 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>
命令进行检查。