规则中的通配符 “*” ,“?” ,“ [...]”, " % " , " wildcard "

1.“*”  *.c表示所有后缀为.C的文件;

   如果文件中用到通配符,使用“\*”;

2.通配符在变量中的使用;

  objects=*.c

  注意:这里的通配符就是用在变量中的,不过,objects的值就是“*.o”,并不会展开;

  如果希望展开的话,可以这么使用:

    objects := $(wildcard *.o);

    wildcard是Makefile中的关键字;

3.Makefile中的自动变量

  $@  :表示的是$@所在的规则中的所有的目标文件集。

  $<   :依赖目标中的第一个目标名字。

    如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。注意,其是一个一个取出来的。

  $^    : 所有的依赖目标的集合。以空格分隔。

    如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。

  $? : 所有比目标新的依赖目标的集合。以空格分隔。   

  $%   :仅当目标是函数库文件中,表示规则中的目标成员名。

      例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是"foo.a"。

      如果目标不是函数库文件(Unix下是[.a],Windows 下是[.lib]),那么,其值为空。 

  $+  :这个变量很像"$^",也是所有依赖目标的集合。只是它不去除重复的依赖目标。

Makefile学习之通配符和自动变量的更多相关文章

  1. makefile编写---单个子目录编译自动变量模板ok

    1.自动化变量通配符http://blog.sina.com.cn/s/blog_7c95e5850101b38l.html 2.wildcard 使用http://blog.csdn.net/lia ...

  2. makefile 分析 -- 内置变量及自动变量

    makefile 分析1  -p 选项,可以打印出make过程中的数据库, 下面研究一下内置的变量和规则. -n 选项, 只运行,不执行, -d 选项,相当于--debug=a,  b(basic), ...

  3. Makefile之自动变量篇

    自动变量假设您编写一个编译‘.c’文件生成‘.o’文件的规则:您怎样编写命令‘CC’,使它能够操作正确的文件名?您当然不能将文件名直接写进命令中,因为每次使用隐含规则操作的文件名都不一样. 您应该使用 ...

  4. robot framework学习笔记之六—自动变量

    自动变量被RF框架创建和修改,在测试执行过程中值可能会变化;另外,某些自动变量在执行过程中并非总是可用.修改自动变量,并不能对变量的初始值产生影响.但可以用某些内建关键字来修改某些自动变量的值. 变量 ...

  5. Makefile学习总结

    Makefile用法分析     在linux开发中,应用程序的编译基本都采用GNU的make工具,而make搭配Makefile来实现工程代码的编译,在越是大型复杂的项目中,make的强悍之处越是明 ...

  6. makefile 学习归纳

    makefile 学习归纳 一直希望 好好整理下 makefile的写法,这在linux编程界是必备技能.下面就好好的说道说道. 可以参考的大神总结 整理 makefile是供make命令执行的 脚本 ...

  7. makefile学习(1)

    GNU Make / Makefile 学习资料 GNU Make学习总结(一) GNU Make学习总结(二) 这篇学习总结,从一个简单的小例子开始,逐步加深,来讲解Makefile的用法. 最后用 ...

  8. Makefile学习之路——4

    变量的类别有递归扩展变量和简单扩展变量.只用一个“=”符号定义的变量被称为递归扩展变量.通过下面例子观察递归扩展变量的特点. .PHONY: all foo=$(bar) bar=$(ugh) ugh ...

  9. Makefile学习一

    上次随着信号学习告一段落,也标志着linux系统编程相关的知识学完了,而学了这么多知识点,是需要用一个综合的项目来将其进行串起来的,这样学习的技术才会不那么空洞,所以接下来会以一个实际例子来综合运用下 ...

随机推荐

  1. Java服务器端消息队列实战

    服务端口监听--报文接收--报文解码--业务处理--报文编码--写回客户端 从服务端与客户端成功握手并产生一个socket后,为了提高吞吐能力,接下来的事情就可以交给多线程去处理. 为了对接入的请求做 ...

  2. 树(tree)

    树(tree) 题目描述 小明正在研究一种砍树游戏.一开始在W列H行的方格上,每一个格子都长着一颗树,格子的行从北到南依次编号,格子的列从西到东依次编号. 小明会砍倒一些树,每砍倒一颗树,树会占据这个 ...

  3. mongo基本命令

    > show dbs    -- 查看数据库列表 > use admin   --创建admin数据库,如果存在admin数据库则使用admin数据库 > db   ---显示当前使 ...

  4. 【CF1017F】The Neutral Zone(Bitset,埃氏筛)

    题意: 思路:From https://blog.csdn.net/CSDNjiangshan/article/details/81536536 #include<cstdio> #inc ...

  5. CodeForces 659D Bicycle Race (判断点是否为危险点)

    D - Bicycle Race Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u S ...

  6. [ CodeVS冲杯之路 ] P1010

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1010/ 首先我们将坐标都+1,因为它是从(0,0)开始的 预处理出禁区,也就是马能到达的格子和马自己的格子,标上记号 ...

  7. 转载~基于比较的排序算法的最优下界为什么是O(nlogn)

    基于比较的排序算法的最优下界为什么是O(nlogn) 发表于2013/12/21 16:15:50  1024人阅读 分类: Algorithm 1.决策二叉树 回答这个问题之前我们先来玩一个猜数字的 ...

  8. 1.1 由C++Builder 6.0 通向OpenGL(1)

    http://book.51cto.com/art/201104/255588.htm 第1章  架好通向OpenGL的桥 本章主要是为以后进行的OpenGL编程进行一些铺垫工作.主要内容有:Open ...

  9. Centos 查看内存

    1. 查看内存使用 free -mh 2. 读出的内核信息进行解释 cat /proc/meminfo MemTotal: kB #所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小 ...

  10. 第一章:1-20、试计算以下两种情况的发送时延和传播时延: (1) 数据长度为107bit,数据发送速率为100kbit/s,传播距离为1000km,信号在媒体上 的传播速率为2×108m/s。 (2) 数据长度为103bit,数据发送速率为1Gbit/s,传输距离和信号在媒体上的传播速率同 上。

    <计算机网络>谢希仁著第四版课后习题答案答: 1):发送延迟=107/(100×1000)=100s         传播延迟=1000×1000/(2×108)=5×10-3s=5ms ...