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

與語言環境相關的資料 (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

對於 <dir> 等於 SYSCONFDIRLOCALSTATEDIRRUNSTATEDIR 的情況,如果 CMAKE_INSTALL_<dir> 的值不是使用者指定的絕對路徑,則會將 / 直接加在 CMAKE_INSTALL_<dir> 的值前面來計算 CMAKE_INSTALL_FULL_<dir>。例如,SYSCONFDIRetc 會變成 /etc。這是 GNU 編碼標準所要求的。

/opt/...

對於 <dir> 等於 SYSCONFDIRLOCALSTATEDIRRUNSTATEDIR 的情況,如果 CMAKE_INSTALL_<dir> 的值不是使用者指定的絕對路徑,則會將前綴附加CMAKE_INSTALL_<dir> 的值來計算 CMAKE_INSTALL_FULL_<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} 傳遞此值。