cmake学习笔记 三

  1. cmake的install:
    install()可以针对多种类型,每种类型用法有区别。install()安装时可以指定安装的路径前缀:CMAKE_INSTALL_PREFIX,只需要cmake -DCMAKE_INSTALL_PREFIX=dir这样,就可以将目标文件install到路径前缀+相对路径的位置(相对路径由install中提供,如果install中提供的路径是以/开头的绝对路径,则上述的CMAKE_INSTALL_PREFIX就会无效)。
    install(TARGETS ......) 目标文件安装:

    
    install(TARGETS targets ...
    	    [[ARCHIVE|LIBRARY|RUNTIME]
    		[DESTINATION <dir>]
    		[PERMISSIONS permissions ...]
    		[CONFIGURATIONS [Debug|Release|...]]
    		[COMPONENT <component>]
    		[OPTIONAL]
    		][...])
    
    # 假设a_exe是可执行文件的target,a_dll是动态库的target,a_static_dll是静态库的target
    install(TARGETS a_exe a_dll a_static_dll
    		RUNTIME DESTINATION bin 		  # 将可执行文件拷贝到${CMAKE_INSTALL_PREFIX}/bin/目录下
    		LIBRARY DESTINATION lib			  # 将动态库文件拷贝到${CMAKE_INSTALL_PREFIX}/lib/目录下
    		ARCHIVE DESTINATION static_lib)   # 将静态库文件拷贝到${CMAKE_INSTALL_PREFIX}/static_lib/目录下
    

    很奇怪的是在cygwin下,会将a_exe以及a_dll都拷贝到RUNTIME对应的目录下,不知道啥原因。
    另外,各个target的具体路径无需关心,只需要target的名称即可。

    install(FILES ......) 普通文件安装:

    install(FILES files ... DESTINATION <dir>
    		[PERMISSIONS permissions...]
    		[CONFIGURATIONS [Debug|Release|...]]
    		[COMPONENT <component>]
    		[RENAME <name>] [OPTIONAL])
    

    默认安装的文件权限为644。从它的语法可以看出,此命令可以重命名文件。

    install(PROGRAMS ......) 非目标可执行文件(如脚本等文件)安装:

    INSTALL(PROGRAMS files ... DESTINATION <dir>
    		[PERMISSIONS permissions...]
    		[CONFIGURATIONS [Debug|Release|...]]
    		[COMPONENT <component>]
    		[RENAME <name>][OPTIONAL])
    

    文件的默认安装权限为755。

    install(DIRECTORY ......) 目录安装:

    install(DIRECTORY dirs ... DESTINATION <dir>
    		[FILE_PERMISSIONS permissions...]
    		[DIRECTORY_PERMISSIONS permissions...]
    		[USE_SOURCE_PERMISSIONS]
    		[CONFIGURATIONS  [Debug|Release|...]]
    		[COMPONENT <component>]
    		[[PATTERN <pattern> | REGEX <regex>]
    		[EXCLUDE] [PERMISSIONS permissions...]][...])
    
    
    # 将xyz这个目录拷贝到${CMAKE_INSTALL_PREFIX}/mmm/目录里
    install(DIRECTORY xyz DESTINATION mmm)
    
    # 将xyz/这个目录下的所有文件拷贝到${CMAKE_INSTALL_PREFIX}/mmm/目录里,但是xyz这个目录本身不拷贝
    install(DIRECTORY xyz/ DESTINATION mmm)
    
    # 将xyz这个目录和abc目录下的所有文件安装到${CMAKE_INSTALL_PREFIX}/mmm目录下,
    # 过滤掉名称为qqq的目录,
    # 将abc目录下所有文件的权限都设定为OWNER_EXECUTE OWNER_WRITE ......
    INSTALL(DIRECTORY xyz abc/ DESTINATION mmm
    		PATTERN "qqq" EXCLUDE
    		PATTERN "abc/*"
    		PERMISSIONS OWNER_EXECUTE OWNER_WRITE WONER_READ GROUP+EXECUTE GROUP_READ)
    
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值