CMAKE_INSTALL_PREFIX

article/2025/10/23 10:26:15

一、定义

CMAKE_INSTALL_PREFIX为cmake的内置变量,用于指定cmake执行install命令时,安装的路径前缀。Linux下的默认路径是/usr/local ,Windows下默认路径是                                      C:/Program Files/${PROJECT_NAME}

二、用法

方法1,在执行cmake时,输入以下命令

cmake -DCMAKE_INSTALL_PREFIX=<你要的安装路径>

方法2,设置变量

SET(CMAKE_INSTALL_PREFIX <你要安装的路径>)

要安装在PROJECT<project_name> 之后

三、实例

1,新建工程,为工程添加一个子目录 src,用来存储源代码main.c;
2,添加一个子目录 doc,用来存储这个工程的文档 hello.txt
3,在工程目录添加文本文件 COPYRIGHT, README;
4,在工程目录添加一个 runhello.sh 脚本,用来调用 hello 二进制
4,将构建后的目标文件放入构建目录的 bin 子目录;
5,最终安装这些文件:将 hello 二进制与 runhello.sh 安装至/<prefix>/bin,将
doc 目录中的 hello.txt 以及 COPYRIGHT/README 安装到
/<prefix>/share/doc/cmake/t2

目录如下

 main.c

#include <stdio.h>int main()
{printf("Hello World from t1 Main!\n");return 0;
}

src下的CMakeLists.txt

SET(SRC_LIST main.c)ADD_EXECUTABLE(hello ${SRC_LIST})

主目录下的 CMakeLists.txt

PROJECT(HELLO)ADD_SUBDIRECTORY(src bin)#安装文件
INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/t2)#安装sh程序
INSTALL(PROGRAMS runhello.sh DESTINATION bin)安装目录
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)

在工程目录添加 runhello.sh 脚本,内容为:hello
添加工程目录中的 COPYRIGHT 和 README的内容分别为
touch COPYRIGHT
touch README 

下面改写各目录的 CMakeLists.txt 文件。
1,安装 COPYRIGHT/README,直接修改主工程文件 CMakelists.txt,加入以下指令:
INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/t2)
2,安装 runhello.sh,直接修改主工程文件 CMakeLists.txt,加入如下指令:
INSTALL(PROGRAMS runhello.sh DESTINATION bin)
3,安装 doc 中的 hello.txt,因为 hello.txt 要安装到/<prefix>/share/doc/cmake/t2,所以我们不能直接安装整个 doc 目录,这里采用的方式是安装 doc ”目录中的内容,也就是使用 doc/”
在工程文件中添加
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
6,尝试我们修改的结果:
现在进入 build 目录进行外部编译,注意使用 CMAKE_INSTALL_PREFIX 参数,这里我们
将它安装到了/tmp/t2 目录:

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

然后运行

make
make install

查看生成的文件

 

参考:

CMAKE_INSTALL_PREFIX — CMake 3.25.1 Documentation

https://hongjh.blog.csdn.net/article/details/120170219

http://file.ncnynl.com/ros/CMake%20Practice.pdf


http://chatgpt.dhexx.cn/article/A87RWZMO.shtml

相关文章

IP-Prefix List

地址前缀列表 一、IP-Prefix List二、语法及匹配规则1、语法2、匹配规则 三、配置案例1、拓扑2、分析ACL实现IP-Prefix List实现 四、IE考试题思考题 在进行配置案例前先了解一下基础知识 一、IP-Prefix List IP-Prefix List&#xff1a;能够同时匹配网络号和前缀长度 性能及可…

【脚本】更新依赖库pkgconfig文件中的prefix设置

在本地编译和安装了某个库后&#xff0c;如果其lib目录下存在pkgconfig子目录&#xff0c;则子目录下会存在若干.pc文件&#xff0c;文件中会有prefix的配置&#xff08;该配置标识当前库的安装路径&#xff09;&#xff0c;当要把该库拷贝到其他机器上时&#xff0c;如果库的路…

Elasticsearch学习--查询(prefix、wildcard、regexp、fuzzy)

一、前缀搜索 prefix 不计算相关度评分性能较差前缀搜索匹配的是分词后的词项前缀搜索没有缓存前缀搜索尽可能把前缀长度设置的更长 GET product/_search {"query": {"fuzzy": {"name": {"value": "product1"}}} } index…

bgp 使用route-map设置Local perference(本地优先属性)配置与详解

实验目的&#xff1a; 1、掌握基于route-map的本地优先配置方法。 2、使用route-map配置可以定置基于目标网络的本地优先。 实验拓扑&#xff1a; 接口IP配置及bgp基础配置详见 CSDNhttps://mp.csdn.net/mp_blog/creation/editor?spm1001.2014.3001.5352 查看R3与R4的路由…

使用route-map 配置BGP本地优先级

一、实验目的&#xff1a; 1、掌握基于route-map的本地优先配置方法。 2、使用route-map配置可以定置基于目标网络的本地优先级。 二、拓扑图&#xff1a; 三、配置BGP基本的配置&#xff1a; 1、配置各路由器的IP地址和BGP协议。配置完之后&#xff0c;查看一下R3和R4的路由表…

Cisco route-map 源地址路由配置

拓朴图&#xff1a; 案例&#xff1a; 公司内部使用的是一条拨号光纤和一条固定专线光纤&#xff0c;默认是指向拨号光纤出口那个网关出去&#xff0c;现在2网段有两台服务器&#xff08;WEB、Mail&#xff09;映射到公网&#xff0c;让外部来访问。 办公区因工作需要&#xf…

bgp route-map应用 配置 学习笔记

先全运行bgp R2 router bgp 2 no auto-summary no synchronzation bgp router-id 2.2.2.2 neighbor 12.1.1.1 remtotes as 10 neighbor 24.1.1.4 remote-as 10r1&#xff1a; router bgp 10 no auto-summary no synchronization bgp router-id 1.1.1.1 neighbor 12.1.1.2…

重分布和Route-MAP

一般在做重分布的时候用route-map较多&#xff0c;当然也可以用分发列表或者前缀列表等等&#xff0c;重分布的时候为了干掉不需要的路由&#xff0c;节约路由器CPU和转发效率可以使用route-map&#xff0c;当然route-map也可以用在其他的场景。 本次实验将ospf与rip重分布来使…

使用Route-Map过滤BGP的路由

实验目的 1、掌握使用Route-Map过滤BGP的路由。 实验拓扑 接口ip配置与bgp基础配置详见&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/125210020查看R3的路由表&#xff1a; R3#show ip route Gateway of last resort is not set1.0.0.0/24 is subnetted…

基于Route-map的路由过滤配置详解

实验目的&#xff1a; 1、掌握基于Route-map的路由过滤配置方法。 2、掌握route-map的命令语法。 实验拓扑&#xff1a; 步骤1:接口ip配置路由协议基础配置重分发详见CSDNhttps://mp.csdn.net/mp_blog/creation/editor/125018583查看R1、R3路由表 R1#show ip route Gateway …

带你轻轻松松了解route-map

一、Route-map概述 1.技术背景 首先来初步认识一下route-map。看上图&#xff0c;我们在R2上&#xff0c;将OSPF路由重发布进RIP&#xff0c;前面已经说过了&#xff0c;在重发布时&#xff0c;可以使用metric关键字来设置路由被重发布进RIP后的metric&#xff0c;这里设置为…

Route-Map个人理解及实验解析

Route-Map:功能性非常强的策略列表&#xff0c;可以用来过滤路由也可以调整路由的属性&#xff0c;自身具备过滤功能。 Route-Map的作用: 1.在重发布的过程中做route-map&#xff0c;重发布过程中可以改变路由的属性&#xff1b;&#xff08;次要作用&#xff09; 2.PBR 策略路…

Route map应用策略路由(上)

一、拓扑图&#xff1a; 二、配置说明&#xff1a; 1、根据拓扑图的配置&#xff0c;R4上面跑OSPF&#xff0c;下面走静态路由&#xff0c;R5和R6走默认路由上去。但是要注意的一点是R4上要加一条命令&#xff1a;default-information originate always (向OSPF区域通知一条默认…

CISCO ROUTE-MAP

强制指定源地址的下一跳 match定义匹配条件 match ip address匹配访问列表或前缀列表 match interface匹配下一跳出接口为指定接口之一的路由 match ip next-hop匹配下一跳地址为特定访问列表中被允许的那些路由 match metric匹配具有指定度量值的路由 match route-type匹…

Route-map扩展(讲解+配置)

目录 ——Route-map扩展一般形式&#xff1a; ——案列&#xff08;1&#xff09;&#xff1a; ——案列&#xff08;2&#xff09;&#xff1a; ——Route-map扩展一般形式&#xff1a; Ip policy-list aaa per/denyMatch …………&#xff08;前缀列表/ACL....&#xff…

路由策略route-map

路由策略 route-map 定义 route-map&#xff0c;路由图&#xff0c;用于实现路由策略。 功能 部署 route-map NM permit 10 match ip address 1 2 match ip address 1 match ip address 2 match interface f0/0 f1/0 route-map NM deny 20 match ip address 2 set weight …

route-map的使用介绍

一、关于route-map route map可用于路由的再发布和策略路由&#xff0c;还经常使用在BGP中。策略路由实际上是复杂的静态路由&#xff0c;静态路由是基于数据包的目标地址并转发到指定的下一跳路由器&#xff0c;策略路由还利用和扩展IP ACL链接&#xff0c;以便提供更多功能的…

011mmap进程通信

LINUX学习笔记 mmap 进程通信1. mmap 函数声明及头文件包含1.1 参数说明1.2 mmap 通信demo 2. mmap 注意事项&#xff1a;2.1 mmap 函数的保险使用方法&#xff1a; 3. demo 父子进程间mmap通信4. demo 非血缘关系进程间mmap通信5. mmap通信与fifo和文件通信的差异6. 匿名映射(…

Linux mmap内存映射

一、什么是mmap mmap是一种内存映射文件的方法&#xff0c;即将一个文件或者其它对象映射到进程的地址空间&#xff0c;实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系&#xff0c;函数原型如下 void *mmap(void *addr, size_t length, int prot, int flags,…