这个博客几乎包括了Makefile中的所有 $ 符号解释
2024-10-21 04:14:41
来源:https://blog.csdn.net/dlf1769/article/details/78997967
Makefile中的$@, $^, $< , $?, $%, $+, $*
http://blog.csdn.net/Jeffrey0000/article/details/12421317
记性不好,多写博客
$@ 表示目标文件
$^ 表示所有的依赖文件
$< 表示第一个依赖文件
$? 表示比目标还要新的依赖文件列表
$% 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是“foo.a(bar.o)”,那么,“$%”就是“bar.o”,“$@”就是“foo.a”。如果目标不是函数库文件(Unix下是[.a],Windows下是[.lib]),那么,其值为空。
$+ 这个变量很像“$^”,也是所有依赖目标的集合。只是它不去除重复的依赖目标。
$* 这个变量表示目标模式中“%”及其之前的部分。如果目标是“dir/a.foo.b”,并且目标的模式是“a.%.b”,那么,“$*”的值就是“dir/a.foo”。这个变量对于构造有关联的文件名是比较有较。如果目标中没有模式的定义,那么“$*”也就不能被推导出,但是,如果目标文件的后缀是make所识别的,那么“$*”就是除了后缀的那一部分。例如:如果目标是“foo.c”,因为“.c”是make所能识别的后缀名,所以,“$*”的值就是“foo”。这个特性是GNU make的,很有可能不兼容于其它版本的make,所以,你应该尽量避免使用“$*”,除非是在隐含规则或是静态模式中。如果目标中的后缀是make所不能识别的,那么“$*”就是空值。
最新文章
- 锋利的jQuery--Ajax(读书笔记四)
- Unity 手指上下左右滑动的判定
- Session与cookie的区别?
- Java条件语句之 switch
- ORA-06550:line 1,column 7;PLS-00201:indentifer &#39;存储过程&#39; must be declared;...PL/SQL Statement ignored 问题
- Floodlight 防火墙是如何起作用的
- CAF(C++ actor framework)使用随笔(使用类去构建actor和使用的一些思路)
- MySQL --log-slave-updates
- 【转】iOS开发6:UIActionSheet与UIAlertView
- juce Justification 分析
- JS实现回到Top(顶部)--JavaScript
- matplotlib的读书笔记
- conda和pip相关操作
- C# 键盘钩子
- 821. 字符的最短距离 c++实现方法
- PAT甲级1057 Stack【树状数组】【二分】
- freeswitch的拨号规则配置
- 110A
- 在Scrapy中使用selenium
- Java内存泄漏相关