🏹

Install

install(TARGETS <target>... [...])
install(IMPORTED_RUNTIME_ARTIFACTS <target>... [...])
install({FILES | PROGRAMS} <file>... [...])
install(DIRECTORY <dir>... [...])
install(SCRIPT <file> [...])
install(CODE <code> [...])
install(EXPORT <export-name> [...])
install(RUNTIME_DEPENDENCY_SET <set-name> [...])
生成各类安装命令。
安装命令会顺序执行。
💡
add_subdirectory() 命令引入的安装也会顺序执行
 

常见的共同选项

DESTINATION
指定安装文件的路径,支持绝对路径和相对路径
相对路径CMAKE_INSTALL_PREFIX 。可以用DESTDIR 覆盖。
cpack 安装器不支持绝对路径,尽可能用相对路径。
 
PERMISSIONS
支持的值
OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_WRITE, GROUP_EXECUTE, WORLD_READ, WORLD_WRITE, WORLD_EXECUTE, SETUID, and SETGID
 
CONFIGURATIONS
不同环境有不同配置
💡
需要把其它选项放在这个选项的后面才能生效
install(TARGETS target
        CONFIGURATIONS Debug
        RUNTIME DESTINATION Debug/bin)
install(TARGETS target
        CONFIGURATIONS Release
        RUNTIME DESTINATION Release/bin)
 
COMPONENT
指定关联的组件名。当安装的时候设置了组件名,则只会执行所关联的安装规则。在安装过程中没指定组件名就会安全全部组件,除非加上了EXCLUDE_FROM_ALL
默认值:Unspecified ,可以通过CMAKE_INSTALL_DEFAULT_COMPONENT_NAME 控制
EXCLUDE_FROM_ALL
New in version 3.6.
标注此安装排除在完全安装外
RENAME
重命名被安装的文件
只有通过命令安装单个文件的时候才生效
OPTIONAL
如果被安装的文件不存在不报错
 

Installing Targets

install(TARGETS targets... [EXPORT <export-name>]
        [RUNTIME_DEPENDENCIES args...|RUNTIME_DEPENDENCY_SET <set-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> ...]]
        )