/***********************************************/
= 递归展开变量
:= 立即展开变量
---------------------------------------------------
$@ 表示一个规则中的目标文件(*.o文件)
file1.o file2.o:head.h
cp $@ /backup
相当于 file1.o:file1.c head.h
cp $@ /backup
gcc -c file1.c -o file1.o
file2.o:file2.c head.h
cp $@ /backup
gcc -c file2.c -o file2.o
--------------------------------------------------
$% 当规则的目标文件是一个静态库文件时,$%代表静态库中的一个成员名。
如某条规则 的目标是 foo.a(bar.o), 则$%的值是bar.o,而$@的值是foo.a
----------------------------------------------------
$< 规则中的第一个依赖文件名。如果使用了隐含规则,那么&<的值为由隐含规则引入的第一个依赖文件名。
file1.o file2.o:head.h
cp $@ /backup
当file1.o过时时,该规则相当于:
file1.o:file1.c head.h
cp $@ /backup
gcc -o file1.o -c file1.c
----------------------------------------------------
$> 与$%一样,只适用于库文件名,它的值是库名。
----------------------------------------------------
$? 所有比目标文件新的依赖文件列表,以空格分开。如果目标是静态库文件名,代表的是库成员(.o文件)
-----------------------------------------------------
$^ 规则的所用依赖文件列表,使用空格分开;如一个文件在依赖文件中出现多次,只列出一次;
-----------------------------------------------------
$+ 规则的所用依赖文件列表,使用空格分开;如一个文件在依赖文件中出现多次,列出多次;
-----------------------------------------------------
$* 目标文件去掉后缀后的名称。如某个规则的目标文件是 file.o,则 $* 是 file
file1.o file2.l:head.h
gcc -c $* -o $@
-----------------------------------------------------
以上自动变量只适用于命令中,不能用在目标文件和依赖文件中,如想用在目标文件和依赖文件中,则前再加一个$
如:
file1.o file2.o:$$.c head.h
gcc -o $*.o -c $@
运行make,解释含用隐含规则的mikefile时,当处理的目标文件为file1.o时,$$*和$*代表file1;
当处理的目标文件是file2.o时,$$*和$*代表file2
相当于:
file1.o:$$*.c head.h
gcc -c $*.c -o $@
file2.o:$$* head.h
gcc -c $*.c -o $@
或者:
file1.o:file1.c head.h
gcc -c file1.c -o file2.o
file2.o:file2.c head.h
gcc -c file2.c -o file2.o
------------------------------------------------------
相关推荐
用STM32F103C8T6和TB6612驱动模块,从零搭建一辆能避障循迹的智能小车(附完整代码)
本文详细介绍了如何使用STM32F103C8T6和TB6612驱动模块从零搭建一辆能避障循迹的智能小车。内容涵盖硬件选型、电路设计、底层驱动配置以及智能行为算法实现,并附有完整代码示例,帮助开发者快速掌握嵌入式开发的核心技术。
makefile之自动化变量
makefile之自动化变量
Word公式一键转MathType保姆级教程(附omml2mml.xsl报错终极解决方案)
本文提供Word公式一键转MathType的保姆级教程,重点解决常见的omml2mml.xsl报错问题。通过详细分析报错原因、官方解决方案实操步骤及转换后格式优化技巧,帮助用户高效完成公式转换,适用于科研论文和商业文档编辑。
Makefile中的自动化变量说明
Makefile文件中“$@、$
K-GAS解读(08)
大众kgas标准,大众及其供应商kgas
当windows安装git时出现以下错误提示
Windows安装Git时出现多个系统配置设置失败错误(exit code 4294967295),提示包括无法设置textconv、LFS过滤器和SSL等配置项。关键问题在于scalar.exe版本不兼容,系统提示"该版本的scalar.exe与你运行的Windows版本不兼容"。解决方案是检查程序版本是否正确,下载与Windows系统兼容的正确版本重新安装即可。
Makefile中的自动化变量
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。
学习十八-UJA107xA简介及移植-0
目录 1、UJA107xA系列手册 1、介绍 2.2.1 BAT引脚功能 2.4.1 V1、V2稳压器 2.5.1 CAN收发器 3.1 Startup Operation 3.2 Normal Operation 5.1 Attached Files 5.2 NXP UJA107xA Example Software 6、main() 1、UJA107xA系列手册 看完手册关于使用还是没有头绪的,只是想SPI发送指令将V2驱动起来,进而驱动起来CAN收...
Makefile基础教学(预定义变量)
上篇文章讲解到了变量的使用,这篇文章继续讲解预定义变量。除了上述这些变量之外,还有许多其他的变量可以在 Makefile 中使用,具体可以参考 GNU Make 的官方文档。通过引用这些变量,在 Makefile 中可以更加灵活地处理命令和操作。
【ESP32设备通信】-LoRa通信
在本文中,我们将使用 Arduino IDE 将 ESP32 与 LoRa SX1278 (Ra-02) 模块连接起来。 我们将创建一个真实的示例项目,通过 LoRa 无线打开/关闭 LED 进行演示。
Mac安装Typescript报错
根本原因是系统级目录的权限限制。推荐通过修改目录权限或使用nvm彻底解决问题。
makefile 自动变量
$@ 代表规则中的目标文件名。如果目标是一个文档(Linux中,一般称.a文件为文档),那么它代表这个文档的文件名。在多目标的模式规则中,它代表的是哪个触发规则被执行的目标文件名。 $% 规则的目标文件是一个静态库文件时,代表静态库的一个成员名。例如,规则的目标是“foo.a(bar.o)”,那么,“$%”的值就为“bar.o”,“$@”的值为“foo.a”。如果目标不是函数库文件,其值为空。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
Makefile中3个常用自动化变量
在Makefile,有三个常用也很好用的自动化变量:$@、$^、$<,所谓自动化变量是在模式规则中定义的一系列文件自动挨个的去除,直至所有的符合模式的文件都取完。这么说可能比较绕,我们可以简单直白的理解,我们写的应用程序,稍微简单的也要有几个文件(.c、.h等),那么复杂的可能有几百,几千,甚至几十万(kernel),我们在编写Makefile时,如果逐个文件去编译,链接,那是绝不可...
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
MakeFile 自动变量
自动变量假设您编写一个编译‘.c’文件生成‘.o’文件的规则:您怎样编写命令‘CC’,使它能够操作正确的文件名?您当然不能将文件名直接写进命令中,因为每次使用隐含规则操作的文件名都不一样。 您应该使用make的另一个特点,自动变量。这些变量在规则每次执行时都基于目标和依赖产生新值。例如您可以使用变量‘$@’代替目标文件名,变量‘$<’代替依赖文件名。 下面是自动...
Makefile自动化变量
自动化变量可以理解为由 Makefile 自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在 Makefile 中描述规则时,依赖文件和目标文件是变动的,显然在命令中不能出现具体的文件名称,否则模式规则将失去意义。模式规则命令中该如何表示文件呢?就需要使用“自动化变量”,自动化变量的取值根据执行的规则来决定,取决于执行规则的目标文件和依赖文件。下面是对所有的自动化变量进行的说明: 自动化变量 说明 $@ 表示规则的目标文件名。
makefile自动变量与隐晦规则推导
博客搬家,原地址:https://langzi989.github.io/2017/09/20/makefile自动变量与隐晦规则推导/ makefile的使用可以大大简化程序编译的过程,不过对于新手来说makefile的执行规则理解起来还是很让人迷糊的。其中最重要的原因是makefile中使用了大量的隐晦规则和自动变量来简化makefile的编写.本节将记录一下makefile自动变量和隐晦规则...
Makefile中常用自动变量
自动变量 含义 $* 不包含扩展名的目标文件名称 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 $ 第一个依赖文件的名称 $? 所有时间戳比目标文件晚的依赖文件,并以空格分开 $@ 目标文件的完整名称 $^ 所有不重复的依赖文件,以空格分开 $% 如果目标是归档成员,则该变量表示目标的归档成员名称 实例: OBJS = kang.o yul
Makefile变量的定义与使用与自动化变量
变量对于我们来说是不陌生的,在学习各种编程语言时会经常用到。就拿C语言来说,变量的使用是十分常见的,变量可以用来保存一个值或者是使用变量进行运算操作。Makefile 中的变量也是这样,我们可以利用它来表示某些多处使用而又可能发生变化的内容,不仅可以节省重复修改的工作,还可以避免遗漏。Makefile 文件中定义变量的基本语法如下:变量的名称=值列表Makefile 中的变量的使用其实非常的简单,因为它并没有像其它语言那样定义变量的时候需要使用数据类型。
Makefile 自动变量
自动变量用于自动代替一条rule的目标和依赖列表: 以下是Makefile中的7种自动变量及其说明: $@:表示规则的目标文件名。如果目标是一个文档文件(Linux中,一般称.a文件为 文档文件,也称为静态库文件) ,那么它代表这个文档的文件名。在多目标模式 规则中,它代表的是哪个触发规则被执行的目标文件名。$%:当规则的目标文件是一个静态库文件时,代表静态库的一个成员名。例如,规则 的
makefile自动化变量
首先说明一下makefile学习比较好的网址,跟我一起写makefile:http://wiki.ubuntu.org.cn/index.php?title=%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile&variant=zh-cn $@ 代表规则中的目标文件名。如果目标是一个文档(Linux中
6.Makefile自动化变量
关于自动化变量可以理解为由 Makefile 自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在 Makefile 中描述规则时,依赖文件和目标文件是变动的,显然在命令中不能出现具体的文件名称,否则模式规则将失去意义。 那么模式规则命令中该如何表示文件呢?就需要使用“自动化变量”,自动化变量的取值根据执行的规则来决定,取决于执行规则的目标文件和依赖文件。下面是对所有的自动化变量进行的说明: 自动化变量 说明 $@ 表示规则.
makefile的两个变量(自动变量和普通变量)
(1)普通变量 如: obj=main.o add.o sub.o mul.o div.o //将后面的值赋值给obj,obj就是一个普通变量 target=zsx //将zsx赋值给target makefile中已经定义的一些普通变量(通常格式都是大写,类似环境变量,它们都是普通变量,直接赋值即可,任意类型皆可):CC,其值为gcc或cc(cc就是gcc,完全等价),且用户还可以修改...
446



被折叠的 条评论
为什么被折叠?



