版本

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

對於共享函式庫,可以使用 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 二進位檔的版本。