来源: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所不能识别的,那么“$*”就是空值。

 

最新文章

  1. 锋利的jQuery--Ajax(读书笔记四)
  2. Unity 手指上下左右滑动的判定
  3. Session与cookie的区别?
  4. Java条件语句之 switch
  5. ORA-06550:line 1,column 7;PLS-00201:indentifer &#39;存储过程&#39; must be declared;...PL/SQL Statement ignored 问题
  6. Floodlight 防火墙是如何起作用的
  7. CAF(C++ actor framework)使用随笔(使用类去构建actor和使用的一些思路)
  8. MySQL --log-slave-updates
  9. 【转】iOS开发6:UIActionSheet与UIAlertView
  10. juce Justification 分析
  11. JS实现回到Top(顶部)--JavaScript
  12. matplotlib的读书笔记
  13. conda和pip相关操作
  14. C# 键盘钩子
  15. 821. 字符的最短距离 c++实现方法
  16. PAT甲级1057 Stack【树状数组】【二分】
  17. freeswitch的拨号规则配置
  18. 110A
  19. 在Scrapy中使用selenium
  20. Java内存泄漏相关

热门文章

  1. linux下redis_单机版_主从_集群_部署文档
  2. C#应用程序配置文件(XML序列化) - 开源研究系列文章
  3. Windows 平台计算 CPU 总利用率
  4. Spring项目中用了这种解耦模式,经理对我刮目相看
  5. MySQL优化四,高性能优化
  6. vue element admin 关闭eslint校验
  7. vulnhub靶场之RIPPER: 1
  8. 在elasticsearch中简单的使用script_fields
  9. 01 LED点灯
  10. 洛谷P1365 期望dp