SOVERSION¶
共享函式庫目標的 ABI 版本號碼。
對於共享函式庫,VERSION
和 SOVERSION
可以分別用來指定建置版本和 ABI 版本。在建置或安裝時,如果平台支援符號連結且連結器支援 so-names,則會建立適當的符號連結。如果僅指定其中一個,則會假設另一個具有相同的版本號碼。SOVERSION
如果設定了 NO_SONAME
屬性,則會被忽略。
一個常見的慣例是同時指定 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
也可能會影響檔案和符號連結名稱。
可以使用 otool -L <binary>
命令檢查 Mach-O 二進制檔的版本。