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
與語言環境相關的資料 (
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
對於
<dir>
等於SYSCONFDIR
、LOCALSTATEDIR
或RUNSTATEDIR
的情況,如果CMAKE_INSTALL_<dir>
的值不是使用者指定的絕對路徑,則會將/
直接加在CMAKE_INSTALL_<dir>
的值前面來計算CMAKE_INSTALL_FULL_<dir>
。例如,SYSCONFDIR
值etc
會變成/etc
。這是 GNU 編碼標準所要求的。
/opt/...
對於
<dir>
等於SYSCONFDIR
、LOCALSTATEDIR
或RUNSTATEDIR
的情況,如果CMAKE_INSTALL_<dir>
的值不是使用者指定的絕對路徑,則會將前綴附加到CMAKE_INSTALL_<dir>
的值來計算CMAKE_INSTALL_FULL_<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}
傳遞此值。