近期学习 Linux 需要使用 Makefile,网上搜罗了很多这方面的资料,所里在这里做一个整理。

1、静态模式

看一个例子:

    objects = foo.o bar.o

    all: $(objects)

    $(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@

上面的例子中,指明了我们的目标从 $object 中获取,

“%.o”表明要所有以“.o”结尾的目标,也就是“foo.o bar.o”,也就是变量 $object 集合的模式,

而依赖模式“%.c”则取模式“%.o”的“%”,也就是“foo bar”,并为其加下“.c”的后缀,于是,我们的依赖目标就是“foo.c bar.c”。

而命令的“$<”和“$@”则是自动化变量,“$<”表示所有的依赖目标集(也就是“foo.c bar.c”),“$@”表示目标集(也就是“foo.o bar.o”)。

于是,上面的规则展开后等价于下面的规则:

    foo.o : foo.c
$(CC) -c $(CFLAGS) foo.c -o foo.o
bar.o : bar.c
$(CC) -c $(CFLAGS) bar.c -o bar.o

最新文章

  1. Spark集群 + Akka + Kafka + Scala 开发(3) : 开发一个Akka + Spark的应用
  2. MVC框架 与Smarty
  3. 关于移动端的font和图片的问题
  4. [官方说明] 为什么ES4要分成两阶段?
  5. android依赖工程,子工程覆盖父工程的相同属性
  6. PHP中cookie与session总结
  7. left join, right join , inner join, join, union的意义
  8. Apache+tomcat的整合
  9. C# Webclient 和 Httpclient如何通过iis authentication 身份验证。
  10. python模块学习:os模块
  11. Pop Star 1.2.5
  12. react子传父
  13. cookie、sesstion、strorage
  14. BZOJ1069 SCOI2007最大土地面积(凸包+旋转卡壳)
  15. HTML+CSS,让div在屏幕中居中(水平居中+垂直居中)方法总结
  16. Java 范例 - 线程
  17. poj_3253 Fence Repair
  18. Linux进程ID号--Linux进程的管理与调度(三)
  19. 机器学习 demo分西瓜
  20. A1084

热门文章

  1. 2018.9.6 Java常考知识点总结
  2. 2018.8.18 servlet使用的会话跟踪除session外还有哪些方式
  3. GPGPU::数学基础教程
  4. datatable中reload和load的区别
  5. python__系统 : 异步实现以及GIL
  6. python__基础 : 类的继承,调用父类的属性和方法
  7. 对文件 I/O,标准 I/O 的缓冲的理解
  8. [Codeforces947D]Riverside Curio(思维)
  9. 翻译 | “扩展asm”——用C表示操作数的汇编程序指令
  10. Java设置模式