makefile 语法笔记 3
这里说明了 在一些情况下 这也是可以使用通配符的
objects =*.o
这种情况是不会展开的
makefile 中的变量是C++/C 中的宏
如果希望展开,可以使用 $(wildcard *.o)
3.4文件搜索
VPATH = src:../headers
make 查找文件的时候 回先查找 src 在查找 ../headers
由冒号 分割
另一个方式是使 vpath 关键字,这种更为ing或
vpath
满足pattern 模式的文件进入dir 目录中去查找
%匹配零或若干字符
比如 vpath %.h ../headers
3.5 伪目标
.phony
例子:
.phony :clean
多个生成目标的例子
伪目标也可以成为依赖:
3.6
多目标
\(@ 自动化变量 ![](https://images2018.cnblogs.com/blog/1054453/201804/1054453-20180417193712141-1260725320.png) 其中,-\)(subst output,,\(@)中的“\)”表示执行一个Makefile的函数,函数名为subst,后面的为参数。关于函数,将在后面讲述。这里的这个函数是截取字符串的意思,“\(@”表示目标的集合,就像一个数组,“\)@”依次取出目标,并执于命令。
后面会有详细解释
3.7 静态模式
写法
展开式
$< 表示所有的依赖目标价集
$@ 表示目标集
3.8 自动生成依赖性
mian.o : mian.c defs
cc -M main.c
那么,编译器的这个功能如何与我们的Makefile联系在一起呢。因为这样一来,我们的Makefile也要根据这些源文件重新生成,让Makefile自已依赖于源文件?这个功能并不现实,不过我们可以有其它手段来迂回地实现这一功能。GNU组织建议把编译器为每一个源文件的自动生成的依赖关系放到一个文件中,为每一个“name.c”的文件都生成一个“name.d”的Makefile文件,[.d]文件中就存放对应[.c]文件的依赖关系。
目前还看不太懂
最新文章
- struct2cell
- 原型设计工具Axure 建模工具powerdesigner
- OpenJudge 2774 木材加工
- 在Word中直接用快捷键查找选中文本
- hibernate异常:org.hibernate.MappingException
- 如何让shell脚本自杀
- 将一个div置于另一个div之上
- flask学习(一)
- LeetCode算法题-Minimum Index Sum of Two Lists(Java实现)
- Linux 故障问题处理
- 关于jquery的选择器中的空格问题
- [硬件]Urg_viewer数据读取
- learning rndis protocol
- 【阅读笔记】《C程序员 从校园到职场》第三章 程序的样式(大括号)
- PHP去除重复的数组数据
- 恢复VS2010/VS2013项目为VS2008项目
- 1051: 手机(MOBILE)
- UDJC用户自定义Java类
- 洛谷 P2469 [SDOI2010]星际竞速 解题报告
- Intellij IDEA常用快捷键和一些配置——Mac版
热门文章
- opencv-访问Mat中每个像素的值
- Python学习day05 - Python基础(3) 格式化输出和基本运算符
- Android笔记之让Debug和Release模式使用相同的签名
- leetcode 996. Number of Squareful Arrays
- Drupal创建Omega 4.x 子主题layout笔记
- Python pylint的安装和使用
- c++继承知识点小结
- 吴恩达《机器学习》课程总结(5)_logistic回归
- vue.js_12_vue的watch和computed
- Yaf--个人封装yaf的框架+swoole+elasticsearch(Window+linux版)