CMake之安装

news2025/2/27 9:39:20

目录

  • 公共选项
  • 安装目标
  • 安装文件
  • 安装目录
  • 安装导出

公共选项

install有多个签名,这些签名公用的选项有以下:

  • DESTINATION:指定文件要安装的目录,可以是相对路径或绝对路径。
    • 相对路径:会使用 CMAKE_INSTALL_PREFIX 作为前缀路径,即 ${CMAKE_INSTALL_PREFIX}/<your_path>,指定路径不存在的话可以自动创建。如果在cpack中使用,路径使用CPACK_PACKAGING_INSTALL_PREFIX
    • 绝对路径
  • COMPONENT:指定一个与安装规则相关联的安装组件名,如"lib", "runtime"等。如果在安装期间指定安装组件,就会只安装与相关的组件。举例说明:
install( 
    TARGETS cxx17 cxx17_test
    RUNTIME DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/bin COMPONENT runtime
    ARCHIVE DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/lib COMPONENT lib
    )

这里编译生成了可执行文件和静态库,可以通过指定COMPOENNT只安装需要的lib,RUNTIME没有安装。
在这里插入图片描述

  • PERMISSIONS:指定要安装的文件的权限,指定哪个权限就有哪个权限,可以指定多个,如RUNTIME DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
  • RENAME:对安装的文件重命令,仅在只有一个文件被安装的条件下才有效。但是以下示例并没有生效
  • install( TARGETS cxx17 ARCHIVE DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/lib PERMISSIONS GROUP_WRITE RENAME dasha)
  • OPTIONAL:安装文件不存在不用报错,继续执行
  • EXCLUDE_FROM_ALL

安装目标

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> ...]]
        )
  • 签名:
    • targets可以是多个,比如可执行文件,动态或静态库
    • 可以分别配置多个文件的安装规则
  • 关键字:
    • ARCHIVE:静态库,如.a文件,.lib等
    • LIBRARY:共享库,so
    • RUNTIME:可执行文件
    • PUBLIC_HEADER:如果给目标设置了PUBLIC_HEADER属性,可以通过该选项安装PUBLIC_HEADER属性指定的文件到目录文件

安装文件

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

将FILES指定的文件安装到DESTINATION指定的路径。DESTINATION不存的话可以自动创建。
RENAME:如果FILES指定了多个文件,这里会报错,目前自测只有一个文件时可以在安装时重命名文件

安装目录

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...]] [...])
  • 将由DIRECTORY 指定的一个或多个目录安装到DESTINATION指定的目录下。要注意的是指定到目录这一级还是目录下,拷贝的路径不一样
  • FILE_PERMISSIONS和DIRECTORY_PERMISSIONS 指定安装之后的权限
  • PATTERN和REGEX:指定用于过滤的正则表达式,PERMISSIONS用于指定经过滤后的文件权限

安装导出

install(EXPORT <export-name> DESTINATION <dir>
        [NAMESPACE <namespace>] [[FILE <name>.cmake]|
        [PERMISSIONS permissions...]
        [CONFIGURATIONS [Debug|Release|...]]
        [EXPORT_LINK_INTERFACE_LIBRARIES]
        [COMPONENT <component>]
        [EXCLUDE_FROM_ALL])
install(EXPORT_ANDROID_MK <export-name> DESTINATION <dir> [...])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/567627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rttread-nano 使用记录:rt_kprintf函数格式化打印无法左对齐

rttread-nano 使用记录&#xff1a;rt_kprintf函数格式化打印无法左对齐 今天用rt_kprintf函数打印输出一个表格&#xff0c;为了表格好看每一列我都使用格式化参数-负号符号设置为了左对齐&#xff0c;但是发现无法打印&#xff0c;也无法打印浮点数&#xff0c;换成微库的pri…

通过注册表显示和隐藏“我的电脑”、“回收站”等图标

注册表路径&#xff1a; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel 其中{208D2C60-3AEA-1069-A2D7-08002B30309D}是我的电脑&#xff0c;值的类型为REG_DWORD&#xff0c;改为0后隐藏&#xff0c;1代表显示。 其…

Try ‘apt --fix-broken install’ with no packages解决办法

在Ubuntu中用apt-get安装软件&#xff0c;系统报出Unmet dependencies错误。 Unmet dependencies. Try ‘apt --fix-broken install’ with no packages (or specify a solution) 解决方案如下&#xff1a; sudo apt --fix-broken install sudo apt-get update sudo apt-get u…

建筑专业应届生零基础想学习数据分析,职业发展前景如何?能学会吗?

建筑应届生零基础想学习数据分析&#xff0c;职业发展前景如何&#xff1f;能学会吗&#xff1f; 当然是能学会的&#xff0c;但如果想要有发展前景&#xff0c;不仅是会数据分析而已&#xff0c;更需要实战能力&#xff0c;能够结合不同的业务进行分析&#xff0c;掌握各种常见…

openFast中的陆上风电机组5MW_Land_DLL_WTurb参数详解

文章目录 一、openFAST是什么&#xff1f;二、参数截图三、参数详解 一、openFAST是什么&#xff1f; openFAST是一种开放源代码的工具&#xff0c;为风能工程师提供了用于模拟和设计风力涡轮机的框架。它可以计算风力涡轮机在各种环境条件下的性能&#xff0c;并提供对风力涡…

HTML、CSS、 JavaScript介绍(二)

CSS 指层叠样式表 (Cascading Style Sheets)&#xff0c;CSS定义如何显示 HTML 元素。HTML 标签原本被设计为用于定义文档内容&#xff0c;样式表定义如何显示 HTML 元素&#xff0c;就像 HTML 中的字体标签和颜色属性所起的作用那样。样式通常保存在外部的 .css 文件中。我们只…

「GPT实战」GPT接入直播间实现虚拟人互动

摘要 ChatGPT和元宇宙都是当前数字化领域中非常热门的技术和应用。结合两者的优势和特点&#xff0c;可以探索出更多的应用场景和商业模式。例如&#xff0c;在元宇宙中使用ChatGPT进行自然语言交互&#xff0c;可以为用户提供更加智能化、个性化的服务和支持&#xff1b;在Ch…

清除浮动的方法

目录 清除浮动 2.1 清除浮动的方法 — ① 直接设置父元素高度 2.2 清除浮动的方法 — ② 额外标签法 2.3 清除浮动的方法 — ③ 单伪元素清除法 2.4 清除浮动的方法 — ④ 双伪元素清除法 2.5 清除浮动的方法 — ⑤ 给父元素设置overflow : hidden 清除浮动 ➢ 含义&#…

springboot+java大学生新生入学报到报道系统+jsp004

新生报到系统分为学院管理员&#xff0c;宿舍管理员&#xff0c;财务管理员&#xff0c;辅导员&#xff0c;学生五种登录身份 学院管理员界面登入后台后有个人信息的展示&#xff0c;可对余下的四种身份信息进行增删改查&#xff0c;可进行对高考信息的导入导出&#xff0c;对报…

藏经阁(八)LCD控制器 ILI9341 解析

文章目录 TFT屏幕介绍LCD控制器ILI9341控制器内部框图ILI9341时序详解RGB565数据格式 TFT屏幕介绍 LCD(Liquid CrystalDisplay)的全称是液晶显示器&#xff0c;是现在用的比较多的手机屏幕材料&#xff0c;特点是价格便宜&#xff0c;使用普及广泛&#xff0c;在显示的时候需要…

Spring Boot 中如何使用 Spring Cloud Alibaba 实现微服务治理

Spring Boot 中如何使用 Spring Cloud Alibaba 实现微服务治理 在现代化的微服务架构中&#xff0c;服务的数量和复杂度越来越高&#xff0c;如何有效地管理这些服务变得越来越重要。Spring Cloud Alibaba 提供了一套完整的微服务治理解决方案&#xff0c;包括服务注册与发现、…

自动化托盘四向穿梭车密集库|HEGERLS托盘四向穿梭车系统具有哪些核心技术?

随着国内外物流行业需求的快速上升&#xff0c;托盘四向穿梭式立体库因其在流通仓储体系中所具有的高效密集存储功能优势、运作成本优势与系统化智能化管理优势&#xff0c;已发展为仓储物流的主流形式之一。河北沃克HEGERLS根据客户需求精准发力&#xff0c;推出了工业级的高品…

煤矿电子封条系统 yolov7

煤矿电子封条系统通过yolov7网络模型算法&#xff0c;煤矿电子封条系统可以实现对煤矿井下人员的出入管理&#xff0c;提高对煤矿井下人员的监管效果。YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。研究者将对计算层的所有计算块应用相同的组参数和通道乘数。然后&…

chatgpt赋能python:PythonSearch:剖析目前最常用的搜索引擎

Python Search: 剖析目前最常用的搜索引擎 搜索引擎在我们日常生活中扮演着非常重要的角色&#xff0c;尤其是Google、Bing、Yahoo这样的大型搜索引擎。Python作为一种高效的编程语言&#xff0c;在搜索引擎的开发中也发挥着至关重要的作用。本文将解析目前最常用的搜索引擎&a…

chatgpt赋能python:Python说:为什么这门编程语言如此重要?

Python说&#xff1a;为什么这门编程语言如此重要&#xff1f; 在过去的十年里&#xff0c;Python已经成为了最受欢迎的编程语言之一。它具有明显的优势&#xff1a;易于学习&#xff0c;简单易用&#xff0c;支持多种应用场景和操作系统。Python说&#xff1a;不论是初学者还…

IDEA常用插件分享

分享几个常用的IDEA开发插件&#xff0c;极大的提高工作效率 1、Alibaba Java Coding Guidelines 阿里巴巴代码规约&#xff1a; Alibaba Java Coding Guidelines 专注于Java代码规范&#xff0c;目的是让开发者更加方便、快速规范代码格式。该插件在扫描代码后&#xff0c;将…

javaWebssh中小学课件资源系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh中小学课件资源系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT…

16:00面试,还没10分钟就出来了 ,问的实在是太...

自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有个兄弟内推我去了一家互联网公司&#xff0c;兴冲冲见面试官…

微软Build:决心全面拥抱AI

原创 | 文 BFT机器人 在今年的Build大会上&#xff0c;可以看出微软致力于将人工智能技术应用于各个领域&#xff0c;使人们的工作更加高效和便捷。随着AI技术的不断发展&#xff0c;微软也在不断探索和尝试新的应用场景。目前&#xff0c;微软已经在其产品和服务中深度融合了…

1200CPU故障诊断

S7-1200/1500CPU由于扩展模块、PN总线等原因可能会导致系统错误报警。CPU上的ERROR指示灯会亮起&#xff0c;此时需要联锁故障安全控制&#xff0c;我们需要读取CPU的故障信息&#xff0c;这里我们先介绍直接读取ERROR指示灯状态判断。 1、CPU状态指示灯 博途右侧指令树&#…