Cmake构建工程设计——Cmake工程安装

Cmake提供了install关键字,用于对应make install功能。安装的文件包括可执行文件、静态库、动态库、文件、目录、脚本文件。

install(TARGETS <target>... [...])
install({FILES | PROGRAMS} <file>... [...])
install(DIRECTORY <dir>... [...])
install(SCRIPT <file> [...])
install(CODE <code> [...])
install(EXPORT <export-name> [...])
CONFIGURATIONS:Debug或Release
ARCHIVE			:安装文件name中的所有静态库类型文件,指定后续的安装路径
LIBRARY			:安装文件name中的所有动态库类型文件,指定后续的安装路径
RUNTIME			:安装文件name中的所有可执行文件,指定后续的安装路径
PRIVATE_HEADER	:私有头文件安装
PUBLIC_HEADER	:公有头文件安装

若路径尚未指定,则会安装到系统默认对应的路径中,例如库文件会默认安装到/usr/local/lib/,但在使用make install时要附带sudo属性,否则会提示没有权限

to "/usr/local/lib/libtest_lib.so.1.2.3.4": Permission denied.

安装库文件:TARGETS

采用TARGETS安装
安装路径可自定义

install(TARGETS ${SOURCE_LIB}
        CONFIGURATIONS ${CMAKE_BUILD_TYPE} # Debug 或 Release
        ARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/target/${CMAKE_BUILD_TYPE}/staticLib  #静态库安装路径
        LIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/target/${CMAKE_BUILD_TYPE}/sharedLib) #动态库安装路径

安装可执行程序:TARGETS

采用TARGETS安装
安装路径可自定义

install(TARGETS ${PROJECT_APP}
     CONFIGURATIONS ${CMAKE_BUILD_TYPE}
		RUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/target/${CMAKE_BUILD_TYPE})

安装文件夹:DIRECTORY

采用DIRECTORY安装,对应的文件夹以及里面的文件会复制到安装的指定路径中
安装路径可自定义

install(DIRECTORY ${PROJECT_SOURCE_DIR}/file
        DESTINATION ${PROJECT_SOURCE_DIR}/target)

安装文件:FILES或PROGRAMS

FILES为普通文件,PROGRAMS为非目标程序,例如shell脚本。
官网有详细说明:

https://cmake.org/cmake/help/v3.15/command/install.html?highlight=install

The PROGRAMS form is identical to the FILES form except that the default permissions for the installed file also include OWNER_EXECUTE, GROUP_EXECUTE, and WORLD_EXECUTE. This form is intended to install programs that are not targets, such as shell scripts. Use the TARGETS form to install targets built within the project.

PERMISSIONS:后面跟着赋予的权限,有效的权限官网有详细说明

PERMISSIONS
Specify permissions for installed files. Valid permissions are OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_WRITE, GROUP_EXECUTE, WORLD_READ, WORLD_WRITE, WORLD_EXECUTE, SETUID, and SETGID. Permissions that do not make sense on certain platforms are ignored on those platforms.

安装路径可自定义

# 安装文件,可读可写
install(FILES ${PROJECT_SOURCE_DIR}/testfile.txt
		DESTINATION ${PROJECT_SOURCE_DIR}/target
		PERMISSIONS OWNER_READ OWNER_WRITE)

# 安装shell脚本,只读
install(PROGRAMS ${PROJECT_SOURCE_DIR}/testsh.sh
		DESTINATION ${PROJECT_SOURCE_DIR}/target
		PERMISSIONS OWNER_READ OWNER_EXECUTE)	

安装后的文件属性

-rw-------  	1 ghost ghost    0 1018 10:30 testfile.txt
-r-x------  	1 ghost ghost   27 1018 10:30 testsh.sh*
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值