SOVERSION

共享函式庫目標的 ABI 版本號碼。

對於共享函式庫,VERSIONSOVERSION 可以分別用來指定建置版本和 ABI 版本。在建置或安裝時,如果平台支援符號連結且連結器支援 so-names,則會建立適當的符號連結。如果僅指定其中一個,則會假設另一個具有相同的版本號碼。SOVERSION 如果設定了 NO_SONAME 屬性,則會被忽略。

一個常見的慣例是同時指定 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 二進制檔的版本。