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
物件程式碼函式庫 (
lib
或lib64
)在 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>
,除了SYSCONFDIR
、LOCALSTATEDIR
和RUNSTATEDIR
之外,如果CMAKE_INSTALL_<dir>
的值不是使用者指定的絕對路徑,則會加上前綴usr/
。例如,INCLUDEDIR
值include
變為usr/include
。這是 GNU 編碼標準要求的,其中指出當建置完整的 GNU 系統時,前綴將為空,並且
/usr
將是/
的符號連結。
/usr
對於等於
SYSCONFDIR
、LOCALSTATEDIR
或RUNSTATEDIR
的<dir>
,如果CMAKE_INSTALL_FULL_<dir>
不是使用者指定的絕對路徑,則通過僅將/
預先添加到CMAKE_INSTALL_<dir>
的值來計算。例如,SYSCONFDIR
值etc
變為/etc
。這是 GNU 編碼標準要求的。
/opt/...
對於等於
SYSCONFDIR
、LOCALSTATEDIR
或RUNSTATEDIR
的<dir>
,如果CMAKE_INSTALL_FULL_<dir>
不是使用者指定的絕對路徑,則通過將前綴附加到CMAKE_INSTALL_<dir>
的值來計算。例如,SYSCONFDIR
值etc
變為/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}
傳遞此值。