Makefile编译原理 makefile中的include关键字

news2024/11/15 11:12:40

一.makefile中的include关键字

类似C语言中的include

将其他文件的内容原封不动的搬入当前文件

make对include关键字的处理方式:

在当前目录搜索或指定目录搜索目标文件

搜索成功:将文件内容搬入当前makefile中

搜索失败:产生警告,并以文件名作为目标查找并执行对应规则

实验1 :当前目录中没有 test.txt文件,makefile 中有对应规则

.PHONY : all

include test.txt

all : 
	@echo "this is all"
	
test.txt :
	@echo "test.txt"
		

mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make all
makefile:4: test.txt: No such file or directory
this is test.txt
this is all
mhr@ubuntu:~/work/makefile1$ 

实验2 :makefile 中 没有 include关键字后面 所对应的目标,当前目录也没有对应文件

.PHONY : all

include test.txt

all : 
	@echo "this is all"
	

/makefile1$ make all
makefile:4: test.txt: No such file or directory
make: *** No rule to make target 'test.txt'.  Stop.
mhr@ubuntu:~/work/makefile1$ 

实验3:当前目录中没有 test.txt文件,makefile 中有对应规则,并在规则中创建 test.txt .执行两次 make all

.PHONY : all

include test.txt

all : 
	@echo "this is all"
	
test.txt :
	@echo "test.txt"
		
	#创建 test.txt
	@touch test.txt
	


mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ ls
func.c  func.h  func.o  hello.out  main.c  main.o  makefile
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make all
makefile:5: test.txt: No such file or directory
this is test.txt
this is all
mhr@ubuntu:~/work/makefile1$ ls
func.c  func.h  func.o  hello.out  main.c  main.o  makefile  test.txt
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make all
this is all
mhr@ubuntu:~/work/makefile1$ 

第一次执行 make all 时候,执行include关键字 所对应的规则,打印字符串病创建 test.txt文件。结果在当前目录生成了test.txt文件。

第二次执行 make all的时候,include关键字找到了 对应的test,txt文件,于是将 test.txt文件里面的内容拷贝过来了,就没必要再去执行 对应的规则了。

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

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

相关文章

网络安全防御保护 Day2

开启管理口WEB登录服务 Cloud配置如下 为管理口配置ip 查看防火墙接口配置 使用https://192.168.20.3(管理口ip):8443登录上防火墙 进入网络界面修改配置 划分vlan vlan20和vlan30也一样,把ip换成10.0.1.1/24和10.0.1.2/24即可 别忘了改变端口…

MySQL运维实战(5.1) 字符和编码的基本概念

作者:俊达 字符和编码 字符 字符是符号,是人们用于交流的各类符号,如26个英文字母、汉字、标点符号、数学运算符、其他语言的字母和符号。 编码 编码是计算机中以二进制方式存储字符的方式。每个字符都有一个对应的编码值,计算机…

[设计模式Java实现附plantuml源码~结构型]对象的间接访问——代理模式

前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…

GNSS定位技术总结与PPP定位技术

1.统一观测值方程 2.PPP方程构建 站间单差方程如下: 同样的,设计矩阵也更加庞大: 站间单差消除了卫星轨道、卫星钟、电离层、对流层以及卫星端的伪距和载波硬件延迟的影响。但在PPP中,我们无法通过站间单差消除这些影响&#xff…

学习使用Flask模拟接口进行测试

前言 学习使用一个新工具,首先找一段代码学习一下,基本掌握用法,然后再考虑每一部分是做什么的 Flask的初始化 app Flask(__name__):初始化,创建一个该类的实例,第一个参数是应用模块或者包的名称 app…

Vertica单点更改服务器ip

需求 服务器网段调整,将ip:192.168.40.190收回,使用ip:192.168.40.200 默认情况下,节点 IP 地址和导出 IP 地址配置相同的 IP 地址。导出地址是网络上有权访问其他 DBMS 系统的节点的 IP 地址。使用导出地址从 DBMS …

elk之安装和简单配置

写在前面 本文看下elk的安装和简单配置,安装我们会尝试通过不同的方式来完成,也会介绍如何使用docker,docker-compose安装。 1:安装es 1.1:安装单实例 下载es安装包 在这里 下载,下载后解压到某个目录…

KubeSphere 核心实战之四【在kubesphere平台上部署Ruoyi-cloud项目】(实操篇 4/4)

**《KubeSphere 核心实战系列》** KubeSphere 核心实战之一(实操篇 1/4) KubeSphere 核心实战之二(实操篇 2/4) KubeSphere 核心实战之三(实操篇 3/4) KubeSphere 核心实战之四(实操篇 4/4&…

Chiplet,汽车“芯”风向

异构集成、高速互联、算力灵活可扩展正在成为新一轮汽车芯片竞争的焦点。尤其是随着以ChatGPT为代表的大数据、大模型产品在车端的落地,对于芯片的要求还在持续提升。 本周,12家日本汽车制造商(包括丰田、日产、本田等)、零部件制…

数据结构之单链表详解

前言 之前大摆了5天多,没怎么学编程,自昨日起,觉不可如此,痛定思痛,开始继续学习,昨天刷了20多道简单级别的力扣,今天想把链表好好巩固一下,于是乎,把单链表的增删查改搞…

【linux|java应用报错】Cannot allocate memory

启动一个java应用报Cannot allocate memory,并且会生产一个hs_ess_pid.log文件。 文件内容为: #内存不足,Java运行时环境无法继续。 #本机内存分配(mmap)无法映射4294967296字节以提交保留内存。 【排查】 1、尝试使…

【日常总结】如何快速迁移Navicat中的全部连接设置到新安装的Navicat中?

一、场景 二、需求 三、解决方案 Stage 1:“文件”-->“导出连接”。 Stage 2:获取备份文件 connections.ncx Stage 3:导入connections.ncx 四、不足 一、场景 公司电脑换新,所有软件需要重装,包括navicat 1…

《golang设计模式》第三部分·行为型模式-10-模板方法(Template Method)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 模板方法(Template Method)用来定义算法的框架,将算法中的可变步骤定义为抽象方法,指定子类实现或重写。 1.1 角色 AbstractClass(…

【脑电信号处理与特征提取】P5-彭薇薇:脑电信号的预处理及数据分析要点

彭薇薇:脑电信号的预处理及数据分析要点 脑电 脑电是神经活动的测量方法,在不同位置测量有不同的方法。比如大脑皮层表面测量的是ECoG,在头皮测量的是EEG。除了EEG是无损的,其他都是有损的。 脑电信号采集系统 下面是完整的…

指针操作一维字符型数组和及回调函数------努力学习嵌入式的第十四天!今天的内容让人脑瓜子嗡嗡的 着重复习

总结 1.快速排序 注意: 第二三步并不能反过来 要想降序排列只需要加将比较的符号换一下 2.指针操作一维字符型数组 (const) char *s "hello"; *sH; //错误 char s[]"hello"; s[0] B char *strncpy(char *d…

05 SB3之Spring Initializr+运行方式+自动配置原理(TBD)

1. 使用IDEA内置Spring Initializr 生成SB项目 最上方Server URL可以选择借助哪个平台生成, 可选阿里云 作为对比 , 官方可选版本最旧为3.1.18 ; 阿里云可选最新版本为3.0.2 本次选择3.1.8版本, 并且添加Spring Web依赖(包括RESTful / Spring MVC/)和Lombok依赖 生成后端项目…

力扣hot100 单词搜索 深度优先搜索 特殊字符判重

Problem: 79. 单词搜索 Code class Solution{int n, m;char[][] b;String word;int[] dx { 1, 0, -1, 0 };int[] dy { 0, 1, 0, -1 };public boolean exist(char[][] board, String word){b board;this.word word;n b.length;m b[0].length; // 以所有点作为起点来进行…

关于 PostgreSQL,你了解多少

背景 最近因工作原因,了解到了阿里的 hologre,它只支持 psql 协议,用起来跟 mysql 会差很多,也很不习惯。所以就好奇,为啥放着mysql不用,却用 psql 什么是 psql psql 是 开源的关系型数据库管理系统 Pos…

vuex store,mutations,getters,actions

文章目录 1.vuex概述2.构建vuex【多组件数据共享】环境Son1.vueSon2.vueApp.vue 3.创建一个空仓库4.如何提供&访问vuex的数据①核心概念 - state状态1.通过store直接访问2.通过辅助函数简化代码 ②核心概念 - mutations(粗略) 5.核心概念 - mutation…

vue3之echarts3D环柱饼图

vue3之echarts3D环柱饼图 效果&#xff1a; 版本 "echarts": "^5.4.1", "echarts-gl": "^2.0.9" 核心代码&#xff1a; <template><div class"content"><div ref"eCharts" class"chart&…