CMake Day 6 —— 安裝規則(install rules)
阿新 • • 發佈:2020-12-25
CMake Day 6 —— 安裝規則(install rules)
在CMake中,安裝是指將二進位制檔案、庫檔案和標頭檔案等安裝到指定目錄中。
語法:
install(TARGETS <target>... [...]) install({FILES | PROGRAMS} <file>... [...]) install(DIRECTORY <dir>... [...]) install(SCRIPT <file> [...]) install(CODE <code> [...]) install(EXPORT <export-name> [...])
該命令是為專案配置安裝規則。在專案中會按照install()命令呼叫的順序執行按照規則。
首先解釋幾個選項:
DESTINATION
:指定要安裝到的目錄,如果是相對路徑,則是相對於CMAKE_INSTALL_PREFIX
變數的,如果是絕對路徑,則直接使用,由於cpack的安裝程式生成器不支援絕對路徑,所有最好使用相對路徑。PERMISSIONS
: 指定安裝檔案的許可權,有效許可權有OWNER_READ
,OWNER_WRITE
,OWNER_EXECUTE
,GROUP_READ
,GROUP_WRITE
,GROUP_EXECUTE
,WORLD_READ
,WORLD_WRITE
,WORLD_EXECUTE
SETUID
和SETGID
。在某些平臺上沒有意義的許可權將被忽略。CONFIGURATIONS
: 指定安裝規則適用的構建配置(Debug, Relase等),如果要為Debug和Relase單獨配置安裝路徑,如下:
install(TARGETS target
CONFIGURATIONS Debug
RUNTIME DESTINATION Debug/bin)
install(TARGETS target
CONFIGURATIONS Release
RUNTIME DESTINATION Release/bin)
EXCLUDE_FROM_ALL
RENAME
: 指定已安裝檔案的名稱,該名稱可能與原始檔案不同。僅當命令安裝了單個檔案時,才允許重新命名.
安裝二進位制檔案
語法:
install(TARGETS targets... [EXPORT <export-name>]
[[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|
PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE]
[DESTINATION <dir>]
[PERMISSIONS permissions...]
[CONFIGURATIONS [Debug|Release|...]]
[COMPONENT <component>]
[NAMELINK_COMPONENT <component>]
[OPTIONAL] [EXCLUDE_FROM_ALL]
[NAMELINK_ONLY|NAMELINK_SKIP]
] [...]
[INCLUDES DESTINATION [<dir> ...]]
)
常用引數:
ARCHIVE
: 靜態庫LIBRARY
: 動態庫RUNTIME
: 可執行檔案
如果沒有指定下列目錄的路徑,則使用內建的預設值:
Target | Variable | Built-In Default |
---|---|---|
RUNTIME | ${CMAKE_INSTALL_BINDIR} | bin |
LIBRARY | ${CMAKE_INSTALL_LIBDIR} | lib |
ARCHIVE | ${CMAKE_INSTALL_LIBDIR} | lib |
PRIVATE_HEADER | ${CMAKE_INSTALL_INCLUDEDIR} | include |
PUBLIC_HEADER | ${CMAKE_INSTALL_INCLUDEDIR} | include |
安裝檔案和目錄
語法:
install(<FILES|PROGRAMS> files...
TYPE <type> | DESTINATION <dir>
[PERMISSIONS permissions...]
[CONFIGURATIONS [Debug|Release|...]]
[COMPONENT <component>]
[RENAME <name>] [OPTIONAL] [EXCLUDE_FROM_ALL])
install(DIRECTORY dirs...
TYPE <type> | DESTINATION <dir>
[FILE_PERMISSIONS permissions...]
[DIRECTORY_PERMISSIONS permissions...]
[USE_SOURCE_PERMISSIONS] [OPTIONAL] [MESSAGE_NEVER]
[CONFIGURATIONS [Debug|Release|...]]
[COMPONENT <component>] [EXCLUDE_FROM_ALL]
[FILES_MATCHING]
[[PATTERN <pattern> | REGEX <regex>]
[EXCLUDE] [PERMISSIONS permissions...]] [...])
當通過命令列使用cmake --install .
或者make install
時,將會執行安裝步驟。如果要指定安裝的根目錄,需要使用cmake --install --prefix "/home/user/installdir" .
來指定。