Makefile5--预定义变量的使用

教你玩转makeflie(三)预定义变量的使用、变量的高级主题 预定义变量的使用5.1 在makefile中存在一些预定义的变量5.2 自动变量的意义5.3 自动变量的使用示例注意:1、“$”对于makefile有特殊含义2、“$@”对于 Bash Shell有特殊含义5.4 编程实验:自动变量的使用.PHONY : all first second thirdall : first second third@echo "\$$@ => $@"@echo "$$^ => $^"@echo "$$< => $... 阅读详情

学习自狄泰软件学院唐佐临老师Makefile课程,文章中图片取自老师的PPT,仅用于个人笔记。


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实验1

.PHONY : all first second third 

all : first second third
	@echo "\$$@ => $@"
	@echo "$$^ => $^"
	@echo "$$< => $<"
	
firtst:
second:
third:


@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make all
$@ => all
$^ => first second third
$< => first
mhr@ubuntu:~/work/makefile1$ 

实验2 : 自动变量的使用 可以快速方便的添加新的依赖

CC := g++
TARGET := hello-world.out

$(TARGET) : func.o main.o
	$(CC) -o $@ $^

func.o : func.c
	$(CC) -o $@ -c $^

main.o : main.c
	$(CC) -o $@ -c $^

.PHONY : rebuild clean all

rebuild : clean all


all : $(TARGET)

clean :
	$(RM) *.o $(TARGET)

		
mhr@ubuntu:~/work/makefile1$ make all
g++ -o func.o -c func.c
g++ -o main.o -c main.c
g++ -o hello-world.out func.o main.o
mhr@ubuntu:~/work/makefile1$ 

在这里插入图片描述

实验3

.PHONY : all out

all out :
	@echo "$(MAKE)"
	@echo "$(MAKECMDGOALS)"
	@echo "$(MAKEFILE_LIST)"


mhr@ubuntu:~/work/makefile1$ make
make  // 当前解释器所对应的文件名就是 make
              //make 这个应用程序的命令行参数 为空  没有带目标名
 makefile //空格 + 当前makefile
mhr@ubuntu:~/work/makefile1$ 

mhr@ubuntu:~/work/makefile1$ make all    //携带了目标名(make这个应用程序的命令行参数)
make  // 当前解释器所对应的文件名就是 make
all  //make 这个应用程序的命令行参数  目标名 all
 makefile //空格 + 当前makefile
mhr@ubuntu:~/work/makefile1$ 

mhr@ubuntu:~/work/makefile1$ make all out //让 make 执行两个目标
make  //先执行 all 目标
all out
 makefile
make //再执行 out 目标
all out
 makefile
mhr@ubuntu:~/work/makefile1$ 

实验4

.PHONY : all out first second third test

all out : 
	@echo "$(MAKE)"
	@echo "$(MAKECMDGOALS)"
	@echo "$(MAKEFILE_LIST)"
	
	
first :
	@echo "first"
	
second :
	@echo "second"
	
third :
	@echo "third"
	
test :
	$(MAKE) first
	$(MAKE) second
	$(MAKE) third




mhr@ubuntu:~/work/makefile1$ make test
make first
make[1]: Entering directory '/home/mhr/work/makefile1'
first
make[1]: Leaving directory '/home/mhr/work/makefile1'
make second
make[1]: Entering directory '/home/mhr/work/makefile1'
second
make[1]: Leaving directory '/home/mhr/work/makefile1'
make third

.PHONY : all out first second third test

all out : 
	@echo "$(MAKE)"
	@echo "$(MAKECMDGOALS)"
	@echo "$(MAKEFILE_LIST)"
	
	
first :
	@echo "first"
	
second :
	@echo "second"
	
third :
	@echo "third"
	
test :
	@$(MAKE) first
	@$(MAKE) second
	@$(MAKE) third




mhr@ubuntu:~/work/makefile1$ make test
make[1]: Entering directory '/home/mhr/work/makefile1'
first
make[1]: Leaving directory '/home/mhr/work/makefile1'
make[1]: Entering directory '/home/mhr/work/makefile1'
second
make[1]: Leaving directory '/home/mhr/work/makefile1'
make[1]: Entering directory '/home/mhr/work/makefile1'
third
make[1]: Leaving directory '/home/mhr/work/makefile1'
mhr@ubuntu:~/work/makefile1$ 

在这里插入图片描述

实验5

.PHONY : test1
	
test1 :
	@echo "$(MAKE_VERSION)"
	@echo "$(CURDIR)"
	@echo "$(.VARIABLES)"

在这里插入图片描述

.PHONY : test1

TDelphi := Delphi Tang
D.T.Software := D.T.
	
test1 :
	@echo "$(MAKE_VERSION)"
	@echo "$(CURDIR)"
	@echo "$(.VARIABLES)"

在这里插入图片描述

在这里插入图片描述

Makefile脚本文件 0.缘由 多文件编程 主文件(main函数所在的文件)往往只包含一些函数的调用。结构体的定义,函数的实现通常在不同的文件中,这时就需要主文件包含一些头文件,标准c库的头文件不用多说,如果是自己定义了头文件,函数的实现过程放到对应的.c文件中,这时候想要编译生成可执行文件,必须和对应头文件的.c文件一起编译。后期如果修改某些文件,还要全部编译,不利于维护。 1.概述 通常来说,一个工程中的源... 阅读详情

相关推荐

用Seurat和ComplexHeatmap绘制单细胞marker基因热图:从数据处理到可视化全流程

本文详细介绍了使用Seurat和ComplexHeatmap绘制单细胞marker基因热图的全流程,涵盖从数据处理、基因筛选、平均表达矩阵计算到高级可视化与注释添加。重点解析了如何利用ComplexHeatmap生成发表级热图,并整合热词信息,解决单细胞数据可视化中的常见问题,提升科研图表质量。

weixin_29048775的博客 528

Makefile中的预定义变量

Makefile中的预定义变量: CC,C语言编译器的名称,cc CPP, C语言预处理器的名称,$(CC) -E CXX, C++语言的编译器名称,g++ RM,删除文件程序的名称,rm -f CFLAGS, C语言编译器的编译选项,无默认值 CPPFLAGS,C语言预处理器的编译选项,无默认值 CXXFLAGS,C++语言编译器的编译选项,无默认值  注:在使用RM时,一般使用如下语

三言两语 1885

【多媒体交互】Unity+普通摄像头实现UI事件分析

利用摄像头捕捉用户的手势或动作,结合坐标映射与事件系统触发UI交互

qq_38350004的博客 1315

Makefile基础教学(预定义变量)

上篇文章讲解到了变量的使用,这篇文章继续讲解预定义变量。除了上述这些变量之外,还有许多其他的变量可以在 Makefile 中使用,具体可以参考 GNU Make 的官方文档。通过引用这些变量,在 Makefile 中可以更加灵活地处理命令和操作。

m0_49476241的博客 1223

本地部署大模型框架 LMStudio和Ollama+WebUI对比

之前我们的辣妈系列文章介绍了很多如何使用Ollama框架+OpenWebUI做很多大模型框架下相关的事情。之后我们也尝试了LMStudio这样一体化的工具。本文介绍下LMStudio 和 Ollama+Web UI 各有优劣,具体选择取决于你的需求。

ms44的专栏 4027

分析以太网帧结构_100G以太网接口调试初体验

是的,标题没有多敲一个“0”,明人不说暗话,就是在FPGA上实现100G以太网接口设计。正好参与了实验室某项目中的100G接口的调试,早想写个专栏文章了,由于调试过程中发现了一些硬件问题,导致迟迟没有往前推进,现在问题解决了之后可以简单分享一下100G以太网接口的调试初体验了~(好像DDR4读写测试系列文章还没搞完 )这篇初体验暂时不分多个章节了,基本设计流程与之前发布的“10G以太网接口”系列文...

weixin_39574050的博客 1602

makefile:预定义变量的使用

1. makefile中预定义的变量 自动变量: $@, $^, $< ...... 特殊变量: $(MAKE), $(MAKECMDGOALS), $(MAKEFILE_LIST) ...... 2. 自动变量的含义 $@: 当前规则中触发命令被执行的目标 $^:当前规则中的所有依赖 $<:当前规则中的第一个依赖 3. 自动变量的使用示例 注意: 1)$对于makefile有特殊的含义,输出时需要加上一个$进行转义 2)$@对Bash Shell有特殊含义,输...

bleauchat的博客 2166

保姆级教程:在S32K312上配置C40驱动,实现Flash读写(基于RTD 4.4.2)

本文详细介绍了在S32K312微控制器上配置C40驱动实现Flash读写的全流程,基于RTD 4.4.2库。内容涵盖环境搭建、外设配置、Flash操作实战代码及高级应用场景,特别针对LLD驱动和FLS存储操作中的常见问题提供了解决方案,帮助开发者快速掌握嵌入式Flash存储技术。

weixin_28684757的博客 255

Makefile基础教程(变量的介绍和使用)

在C语言等语言中存在变量这个概念那么在Makefile中也是存在变量这个概念的,现在就让我们来学习一下什么是Makefile中的变量。变量是在Makefile中被定义并被赋予特定的值或字符串,这些变量可以在整个Makefile中引用和使用。在Makefile中定义变量,可以使Makefile更加灵活,便于维护和重复使用代码。变量通常用于存储文件名、目录路径、编译器选项等常用的定义,并且可以动态地用于自动构建步骤的指令中。以下是一些Makefile变量的示例:CC变量:用于指定编译器的类型。

m0_49476241的博客 3543

【深度学习新浪潮】Nano Banana(Gemini 2.5 Flash Image)技术解析与开发者实操指南

重新定义了 AI 图像生成的产业标准。它不仅是“平民化的视觉工厂”,更是推动内容生产从“创意试错”转向“精准制造”的关键工具。未来,随着视频生成能力的加入(谷歌计划支持“文字指令 - 动态场景 - 多平台适配”全流程),Nano Banana 有望进一步颠覆影视、广告等领域的创作范式。:批量生成多场景图,模特姿态自然,服装褶皱和材质细节高度一致,节省 90% 拍摄成本。模型的非正式代号,是一款革命性的 AI 图像生成与编辑工具,主打。:生成细节丰富的厨师特写,光影自然,皮肤纹理和刀具反光逼真。

专注:太空算力、AI infra、异构调度、大模型成本工程 888

AutoSAR配置视频讲解:简介

AutoSAR实验视频讲解:闪烁一颗LED实验【简介】 大家好,欢迎来到雪云飞星的《AutoSAR实验课的视频讲解》专栏。看过《AutoSAR入门到精通系列讲解》的朋友们应该对博主不陌生,有很多朋友加了博主的微信成为了好友,还有朋友约过线下见面,博主很高兴大家能从我的博客中获得一些收获。在专栏里博主挖了很多坑,当时也说过想要录制一个AutoSAR的配置视频教程,素材在20年初就已经录好,中间各种原因足足鸽了一年。当时因为一些技术原因只能通过博客的图文形式展示出来,现在我们剪辑了视频,请了专业的配音,希望以视

雪云飞星的博客 9652

【Makefile由浅入深完全学习记录5】预定义变量的使用

今天学习Makefile预定义变量的使用,加qq:1126137994.微信:liu1126137994一起学习更多技术!!! 1.预定义变量:自动变量 在Makefile中存在一些预定义过的变量,我们可以直接拿来使用而不用自己再定义 自动变量 $@ , $^ , $&amp;lt; 特殊变量 $(MAKE) , $(MAKECMDGOALS) , $(MAKEFILE_L...

厚积薄发 912

万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文

这篇文章是图像处理的最后一篇文章,后面我们将进入新的章节。图像处理文章主要讲解的图像处理方法包括图像几何运算、图像量化采样、图像点运算、图像形态学处理、图像增强、图像平滑、图像锐化、图像特效、图像分割、傅里叶变换与霍夫变换、图像分类等。个人感觉如果你是编程初学者、Python初学者或图像处理爱好者,这个系列真心适合你学习,并且这篇文章算是Python图像处理的学习路线,希望您喜欢。

杨秀璋的专栏 2万+

makefile学习(五):预定义变量的使用

5.预定义变量的使用 学自<狄泰软件学院> 在makefile中存在一些预定义的变量 自动变量 $@, $^, $< 特殊变量 (MAKE) , (MAKECMDFOALS) , (MAKEFILE_LIST) (MAKE_VERSION), (CURDIR) , (.VARIABLES) …. 自动变量 $@: 当前规则中触发命令被执行的目标 ...

食梦者 931

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

5.预定义变量的使用

目录 1.在makefile中存在一些预定义的变量 2.自动变量的意义 3.自动变量的使用示例 4.一些特殊变量的含义 5.小结 1.在makefile中存在一些预定义的变量 自动变量 $@, $^, $< 特殊变量 $(MAKE), $(MAKECMDGOALS), $(MAKEFILE_LIST) $(MAKE_VERSION), $(CURDIR), $(VARI...

qq_34738528的博客 323

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux Makefile-概述、语句格式、编写规则、多文件编程、Makefile变量分类:自定义变量、预定义变量

Linux Makefile-概述、语句格式、编写规则、多文件编程、Makefile变量分类:自定义变量、预定义变量

weixin_45925859的博客 1788

makefile变量

1.变量和不同的赋值方式 (1)makefile中支持程序设计语言中变量的概念 (2)makefile中的变量只代表文本数据(字符串) (3)makefile中的变量名规则 变量名可以包含字符,数字,下划线 不能包含“:”,"#","=“或” " 变量名大小写敏感 (4)变量的定义和使用 cc:=gcc TARGET:=hello.out //变量定义 $(TARGET):func.o main.o $(cc) -o $(TARGET) func.o main.o //变量使用 (5)makefi

weixin_46571142的博客 3568

第五载:预定义变量的使用

在makefile中,存在一些预定义的变量,我们可以直接使用他们,预定义的变量可分为自动变量与特殊变量 1、 自动变量 $@ 表示目标 $^ 表示目标的所有依赖 $< 表示目标的第一个依赖 all : first second third @echo "\$$@ => $@" @ec...

年少轻狂,幸福时光 428

第5课 - 预定义变量的使用

1. makefile中的预定义变量 (1)自动变量 $@, @^, @<     (2)特殊变量 $(MAKE), $(MAKECMDGOALS) , $(MAKEFILE_LIST) $(MAKEVERSION), $(MAKEVERSION), $(CURDIR) , $(.VARIABLES)  ...... 2. 自动变量的使用 (1)自动...

梦心之魂的博客 112

Makefile入门(超详细一文读懂)

1、Makefile基本格式 1、语法规则 目标 ... : 依赖 ... 命令1 命令2 . . . 1、目标即要生成的文件。如果目标文件的更新时间晚于依赖文件更新时间,则说明依赖文件没有改动,目标文件不需要重新编译。否则会进行重新编译并更新目标文件。 2、默认情况下Makefile的第一个目标为终极目标。 3、依赖:即目标文件由哪些文件生成。 4、命令:即通过执行命令由依赖文件生成目标文件。注意每条命令之前必须有一个tab保持缩进,这是语法要求(会有一些编辑工具默认tab为4个空格,会造成Mak

ZBraveHeart的博客 14万+

Makefile的简易使用教程

Makefile的变量类型有许多,本文只解释常用的个别命令比如:预定义变量,用户自定义变量,自动化变量。变量类型集合如下面的表格所示。变量类型定义方式典型用途​用户自定义变量用户显式定义配置项目路径、文件名、选项等​预定义变量Make 内置控制编译器、工具链行为​自动化变量Make 动态生成在规则中引用目标或依赖文件​环境变量操作系统或 Shell跨 Makefile 共享配置​模式特定变量按文件模式定义为特定类型文件设置局部选项​命令行参数变量通过命令行传递。

m0_73991989的博客 1473

makefile 打印变量_makefile

make概述1、gcc的编译过程 分析问题gcc 编译的时候 不会 检查 文件是否被修改过 直接 所有源文件 重新编译(会造成 大量的重复 编译)make: 编译的时候 会 检查 文件是否被修改过 只编译 被修改过源文件 (避免 大量的重复 编译)make:大量代码 的关系维护make的语法通过 依赖文件 生成 目标文件。目标:依赖文件 (只是关系的描述) 命令列表(将依赖文件 生成 目标...

weixin_39625975的博客 1348

5. 预定义变量的使用

1. 自动变量与特殊变量 1.1 自动变量 $@: 当前规则中触发命令被执行的目标 $^: 当前规则中的所有依赖 $<: 当前规则中的第一个依赖 注意:“$”对于makefile有特殊含义,输出时需要加上一个“$”进行转义 把之前的代码改进: 好处:需要添加新的依赖的话,只用加一个依赖名字即可 2.2 特殊变量 $(MKAE): 当前make解释器的文件名 $(MAKECMDGOALS) 命令行中指定的目标名(make的命令行参数) $(MAKEFILE_LIST) make所需要处理的make

weixin_46258483的博客 230

预定义变量的使用

预定义变量的使用 1、预定义变量 在makefile中存在一些预定义的变量 自动变量 @,@,@,^,$< 特殊变量 (MAKE),(MAKE),(MAKE),(MAKECMDGOALS),$(MAKEFILE_LIST) (MAKEVERDION),(MAKE_VERDION),(MAKEV​ERDION),(CURDIR),$(.VARIABLES) … 2、自动变量的意义 $@ 当前规则中触发命令执行的目标 $^ 当前规则中的所有依赖 $< 当前规则中的第一

LangLang_2020的博客 315

Makefile 变量与函数替换

系统变量进行Makefile操作自定义变量顾名思义就是用户自己定义的变量A = apple # 定义并赋值变量C = $(A) tree # $() 则是对某一个变量进行引用Even:@echo $(A)@echo $(B)@echo $(C)Makefile预定义变量B = ChinaEven :echo $(A);直接定义条件定义方式A = appleA?多命令行定义方式。

好作息,好心态,多锻炼,多学点,多钻研 1119
上一篇: Makefile4--变量和不同的赋值方式
下一篇: Makefile6--变量的高级主题
Ma浩然
博客等级 码龄9年 1万+粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma浩然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值