GNUInstallDirs

定義 GNU 標準安裝目錄

提供由 GNU 編碼標準定義的安裝目錄變數。

結果變數

包含此模組會定義以下變數

CMAKE_INSTALL_<dir>

給定類型檔案的目的地。此值可以傳遞給 DESTINATION 選項,用於 install() 指令的對應檔案類型。它應該是相對於安裝前綴的路徑,以便可以以可重定位的方式轉換為絕對路徑。

雖然允許絕對路徑,但不建議使用,因為它們不適用於 cmake --install 指令的 --prefix 選項,或 cpack 安裝程式產生器。特別是,無需通過預先添加 CMAKE_INSTALL_PREFIX 來使路徑成為絕對路徑;如果 DESTINATION 是相對路徑,則預設使用此前綴。

CMAKE_INSTALL_FULL_<dir>

從對應的 CMAKE_INSTALL_<dir> 值產生的絕對路徑。如果該值還不是絕對路徑,則通常通過預先添加 CMAKE_INSTALL_PREFIX 變數的值來建構絕對路徑。但是,如下文所述,有一些 特殊情況

這些變數不應在 install() 指令中使用,因為它們不適用於 cmake --install 指令的 --prefix 選項,或 cpack 安裝程式產生器。

其中 <dir> 是以下之一

BINDIR

使用者可執行檔 (bin)

SBINDIR

系統管理員可執行檔 (sbin)

LIBEXECDIR

程式可執行檔 (libexec)

SYSCONFDIR

唯讀單機資料 (etc)

SHAREDSTATEDIR

可修改的架構獨立資料 (com)

LOCALSTATEDIR

可修改的單機資料 (var)

RUNSTATEDIR

版本 3.9 新增: 執行階段變數資料 (LOCALSTATEDIR/run)

LIBDIR

物件程式碼函式庫 (liblib64)

在 Debian 上,當 CMAKE_INSTALL_PREFIX/usr 時,這可能是 lib/<multiarch-tuple>

INCLUDEDIR

C 標頭檔 (include)

OLDINCLUDEDIR

非 gcc 的 C 標頭檔 (/usr/include)

DATAROOTDIR

唯讀架構獨立資料根目錄 (share)

DATADIR

唯讀架構獨立資料 (DATAROOTDIR)

INFODIR

info 文件 (DATAROOTDIR/info)

LOCALEDIR

locale 相依資料 (DATAROOTDIR/locale)

MANDIR

man 文件 (DATAROOTDIR/man)

DOCDIR

文件根目錄 (DATAROOTDIR/doc/PROJECT_NAME)

如果包含器未定義值,則將使用上面顯示的預設值,並且該值將出現在快取中以供使用者編輯。

特殊情況

版本 3.4 新增。

以下 CMAKE_INSTALL_PREFIX 的值是特殊的

/

對於 <dir>,除了 SYSCONFDIRLOCALSTATEDIRRUNSTATEDIR 之外,如果 CMAKE_INSTALL_<dir> 的值不是使用者指定的絕對路徑,則會加上前綴 usr/。例如,INCLUDEDIRinclude 變為 usr/include。這是 GNU 編碼標準要求的,其中指出

當建置完整的 GNU 系統時,前綴將為空,並且 /usr 將是 / 的符號連結。

/usr

對於等於 SYSCONFDIRLOCALSTATEDIRRUNSTATEDIR<dir>,如果 CMAKE_INSTALL_FULL_<dir> 不是使用者指定的絕對路徑,則通過僅將 / 預先添加到 CMAKE_INSTALL_<dir> 的值來計算。例如,SYSCONFDIRetc 變為 /etc。這是 GNU 編碼標準要求的。

/opt/...

對於等於 SYSCONFDIRLOCALSTATEDIRRUNSTATEDIR<dir>,如果 CMAKE_INSTALL_FULL_<dir> 不是使用者指定的絕對路徑,則通過將前綴附加CMAKE_INSTALL_<dir> 的值來計算。例如,SYSCONFDIRetc 變為 /etc/opt/...。這是由 檔案系統階層標準定義的。

此行為不適用於 /opt/homebrew/... 下的路徑。

巨集

GNUInstallDirs_get_absolute_install_dir
GNUInstallDirs_get_absolute_install_dir(absvar var dirname)

版本 3.7 新增。

將給定的變數 absvar 設定為變數 var 中包含的絕對路徑。這是為了允許計算絕對路徑,並考慮上述所有特殊情況。雖然此巨集用於計算各種 CMAKE_INSTALL_FULL_<dir> 變數,但它公開公開,以允許建立額外路徑變數的使用者也可以在必要時使用相同的邏輯計算絕對路徑。dirname 是要取得的目錄名稱,例如 BINDIR

版本 3.20 變更: 新增了 <dirname> 參數。CMake 的先前版本通過變數 ${dir} 傳遞此值。