3.CMakeLists——完成脚本、说明文档、版权文件doc文件夹的指定位置安装

2023-05-16

1、实例

在这里插入图片描述

在CMakeLists.txt目录下加入如下语句执行安装操作:

INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/t2)
INSTALL(PROGRAMS bin/run.sh DESTINATION bin)
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)

执行

cmake -DCMAKE_INSTALL_PREFIX=/tmp/t2/usr ..
make
make install

文件COPYRIGHT README 安装到 /tmp/t2/usr/share/doc/cmake/t2目录中
执行文件bin/run.sh 安装到 /tmp/t2/bin中
文件夹doc中的文件安装到 /tmp/t2/share/doc/cmake/t2中

如果我没有定义 CMAKE_INSTALL_PREFIX,执行cmake …;make;make install, CMAKE_INSTALL_PREFIX 的默认定义是/usr/local

1、安装命令详解
1.1、CMAKE_INSTALL_PREFIX命令,设定使用install命令安装的目标路径

CMAKE_INSTALL_PREFIX变量,类似于configure脚本的 –prefix,常见的使用方法:

cmake -D CMAKE_INSTALL_PREFIX=/usr .

1.2、INSTALL命令
1.2.1、INSTALL命令基础

INSTALL 指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及 文件、目录、脚本等。

INSTALL 指令包含了各种安装类型,我们需要一个个分开解释:

1.2.2、目标文件的安装

INSTALL(TARGETS targets...
            [[ARCHIVE|LIBRARY|RUNTIME]
                        [DESTINATION <dir>]
                        [PERMISSIONS permissions...]
                        [CONFIGURATIONS
          [Debug|Release|...]]
                        [COMPONENT <component>]
                        [OPTIONAL]
                       ] [...])

参数中的 TARGETS 后面跟的targets 就是我们通过 ADD_EXECUTABLE 或者 ADD_LIBRARY 定义的目标文件,可能是ARCHIVE 特指静态库,LIBRARY 特指动态库,RUNTIME 特指可执行目标二进制。

DESTINATION 定义了安装的路径,如果路径以/开头,那么指的是绝对路径,这时候 CMAKE_INSTALL_PREFIX 其实就无效了。如果你希望使用 CMAKE_INSTALL_PREFIX 来 定义安装路径,就要写成相对路径,即不要以/开头,那么安装后的路径就是

${CMAKE_INSTALL_PREFIX}/<DESTINATION 定义的路径>
1.2.3、INSTALL实例

INSTALL(TARGETS myrun mylib mystaticlib
     RUNTIME DESTINATION bin
     LIBRARY DESTINATION lib
     ARCHIVE DESTINATION libstatic
)
可执行二进制 myrun 安装到${CMAKE_INSTALL_PREFIX}/bin 目录
动态库 libmylib 安装到${CMAKE_INSTALL_PREFIX}/lib 目录
静态库 libmystaticlib 安装到${CMAKE_INSTALL_PREFIX}/libstatic 目录

1.2.4、普通文件的安装

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

可用于安装一般文件,并可以指定访问权限,文件名是此指令所在路径下的相对路径。如果 默认不定义权限 PERMISSIONS,安装后的权限为:

OWNER_WRITE, OWNER_READ, GROUP_READ,和WORLD_READ,即644权限。
1.2.5、非目标文件的可执行程序安装

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

跟上面的 FILES 指令使用方法一样,唯一的不同是安装后权限为: OWNER_EXECUTE, GROUP_EXECUTE, 和WORLD_EXECUTE,即755权限
1.2.6、目录的安装

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...]] [...])

这里主要介绍其中的 DIRECTORY、PATTERN 以及 PERMISSIONS 参数。

DIRECTORY 后面连接的是所在 Source 目录的相对路径,但务必注意:

abc 和 abc/有很大的区别。

如果目录名不以/结尾,那么这个目录将被安装为目标路径下的 abc,如果目录名以/结尾, 代表将这个目录中的内容安装到目标路径,但不包括这个目录本身。
1.2.7、pattern用于正则表达式过滤

PATTERN 用于使用正则表达式进行过滤,PERMISSIONS 用于指定 PATTERN 过滤后的文件 权限。

我们来看一个例子:

INSTALL(DIRECTORY icons scripts/ DESTINATION share/myproj
PATTERN "CVS" EXCLUDE
            PATTERN "scripts/*"
            PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
                    GROUP_EXECUTE GROUP_READ)

这条指令的执行结果是:去除CSV文件以外
将icons目录安装到 /share/myproj,将scripts/中的内容安装到/share/myproj
不包含目录名为CVS的目录,对于scripts/*文件指定权限为 OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ.
1.2.8、安装时 CMAKE 脚本执行

INSTALL([[SCRIPT <file>] [CODE <code>]] [...])

SCRIPT 参数用于在安装时调用 cmake 脚本文件(也就是.cmake 文件) CODE 参数用于执行 CMAKE 指令,必须以双引号括起来。比如:
INSTALL(CODE "MESSAGE(\"Sample install message.\")")

安装还有几个被标记为过时的指令,比如 INSTALL_FILES 等,这些指令已经不再推荐使 用,所以,这里就不再赘述了。

原文链接:https://blog.csdn.net/u013069552/article/details/113614489

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3.CMakeLists——完成脚本、说明文档、版权文件doc文件夹的指定位置安装 的相关文章

随机推荐

  • 基于模型的系统工程 | MBSE

    文章目录 1 什么是系统2 什么是系统工程3 什么是基于模型的系统工程4 MBSE要素5 MBSE相对于TBSE优势6 总结 已剪辑自 https modelbaba com mbse 101 html 1 什么是系统 系统 xff08 S
  • MBSE详细介绍

    文章目录 MBSE是什么 有什么用 怎么学习 xff1f 1 MBSE是什么 xff1f 2 MBSE有什么用 xff1f 3 MBSE的方法有哪些 xff1f 4 MBSE怎么学习 xff1f MBSE建模学习之一 xff1a 有26种分
  • CSDN,我的良师益友

    鲁迅曾说过 xff1a 不是缺乏天才 xff0c 而是缺乏培养天才的土壤 对于中国的 IT 行业来说 xff0c 从来不缺乏技术英雄 xff0c 缺少的是铸就技术英雄的平台 而 CSDN 就给了我们这样一个平台和机会 xff0c 所以我们是
  • 如何把PPT连背景一起复制?

    如何把PPT连背景一起复制 xff1f 如何将一个ppt中的版式原样复制到另外一个ppt上 xff0c 不改变那个ppt的背景模板 xff1f 1 首先打开一个PPT xff0c 点击上面的工具 插入 xff0c 选择 新建幻灯片 的下拉三
  • 智睿思维基于模型的系统工程软件 (MBSES)

    文章目录 智睿思维基于模型的系统工程软件 xff08 MBSES xff09 中文国产化MBSE软件工具支持SysML9种图模块定义图内部模块图参数图包图用例图活动图状态机图需求图序列图 模型检查 引用 子类查询行为模型的仿真执行报表和发布
  • 干货分享|基于模型的系统工程(MBSE)介绍

    干货分享 基于模型的系统工程 xff08 MBSE xff09 介绍 xff08 上 xff09 已剪辑自 https icv 51cto com posts 427 前言 汽车智能化主要体现在车辆自身功能的数字化与自动化及车辆与外界 xf
  • 嵌入式软件可靠性设计的编程要点?

    文章目录 1 判错2 判断实参是否合法3 仔细检查函数的返回值4 防止指针越界5 防止数组越界6 数学算数运算7 其它可能出现运行时错误的地方8 编译器语义检查9 关键数据多区备份 xff0c 取数据采用 表决法 10 非易失性存储器的数据
  • 基础知识 | 适航委任代表的前世今生

    已剪辑自 https mp weixin qq com s yxLKQ2uxkOe7 uAWW4rt4g 01 根据CCAR 183部 民用航空器适航委任代表和委任单位代表的规定 R1版的定义 xff0c 委任代表是指民航局委任适航部门以外
  • 经历分享:我是如何出版了人生的第一本书的

    已剪辑自 https mp weixin qq com s LK1d45SyKcvh1kcMwMCjog 对很多互联网人来说 xff0c 从输出 写文章到出书 xff0c 是一个重要的里程碑节点 但很多人仅仅是停留在文章阶段 xff0c 并
  • 需求工程与系统工程

  • 软件测试类型——集成测试

    已剪辑自 https blog csdn net vikeyyyy article details 80900540 简介 集成测试 xff08 Integration Testing xff09 xff0c 也叫组装测试或联合测试 在单元
  • 代理模型介绍大全

    已剪辑自 https zhuanlan zhihu com p 555814030 1 代理模型简介 一次看文献的时候 xff0c 看到一篇关于代理模型的文章 xff0c 讲解的十分细致 xff0c 深受启发 xff0c 醍醐灌顶 xff0
  • 一篇文章让你了解ISIGHT

    已剪辑自 https vsystemes com 35621 1 概述 经过了二十年的发展 xff0c 对于国内CAE仿真 xff0c 众多企业的目光已经不再只关注仿真本身 xff0c 更多的将目光放在了以下三个方面 xff1a 1 关注的
  • DDS(data distribution service,数据分发服务)简介

    已剪辑自 http www uml org cn modeler 20201010112 asp 编辑推荐 文章主要介绍了DDS高级数据中心接口取代了以消息为中心的编程和基本技术概念等相关内容 来自于dds foundation org 由
  • Oracle 删除表空间回收磁盘空间

    1 查询表空间和表空间数据库文件路径 span class token keyword SQL span span class token operator gt span span class token keyword select s
  • 在Ubuntu中使用雷电3外接显卡(eGPU)进行深度学习

    sud种种很凑巧的因素 xff0c 需要用这么一套设备做深度学习 笔记本是联想yoga s730 xff0c 两年前在某多多入手 xff0c 显卡坞是技嘉gaming box 43 GTX1070 xff0c 某鱼入手 折腾了一上午 xff
  • make和cmake命令

    我们在安装Ubuntu软件时 xff0c 有时我们会用到make和cmake命令 所以在这篇文章我们来讲解一下 xff0c make命令和cmake命令他们的作用 xff0c 以及什么关系和区别 首先假设你有一定的计算机基础 xff0c 能
  • 小觅双目相机自带参数配置ORBSLAM3双目参数文件

    ORBSLAM3相机需要的参数 打开 home knight ORB SLAM3 Examples Stereo EuRoC yaml 以这个开源数据集的参数为模板 1 Camera type PinHole 相机模型 小觅双目相机也是针孔
  • GVINS编译出现大量的error: ‘CV_CALIB_CB_ADAPTIVE_THRESH’ was not declared in this scope错误

    错误 xff1a home knight GVINS GI src GVINS main camera model src chessboard Chessboard cc 38 43 error CV CALIB CB NORMALIZE
  • 3.CMakeLists——完成脚本、说明文档、版权文件doc文件夹的指定位置安装

    1 实例 在CMakeLists txt目录下加入如下语句执行安装操作 xff1a INSTALL FILES COPYRIGHT README DESTINATION share doc cmake t2 INSTALL PROGRAMS