2018-03-16 Makefile学习笔记

2018-03-16  本文已影响12人  Duckie

1,Makefile结构

[target]: [prerequisite]

    command

每个命令行必须以一个tab字符开头。

每个命令在属于自己的 Shell 中运行(译者:意思是每个 Shell 命令都是一个单独的进程),所以要注意:在使用像 cd 这样的命令时,它不会对后面的行造成影响。

伪目标phony target,如all, clean等。

2,make 有宏(macro)的概念

当宏被引用时就会被展开为字符串。传统上,使用叫做CC的宏表示 C 编译器,CFLAGS表示传递给 C 编译器的标志,LDFLAGS表示当 C 编译器链接时的标志,LDLIBS表示库链接时的标志。Makefile 应该在需要时提供默认值。

一个宏通过 $(...) 进行展开。引用一个尚未定义的宏是有效(也是常见)的,未定义的宏会被展开为一个空字符串。这就是下面的 LDFLAGS 情况。宏的值可以包含其他宏,每当宏被展开时,它们会被递归展开。

3,推断规则inference rule

.SUFFIXES: .c .o

.c.o:

    $(CC) $(CFLAGS) -c $<

第一个空的 .SUFFIXES 会清空后缀列表(suffix list). 第二个 .SUFFIXES 将 .c 和 .o 加到现在是空的后缀列表中。

本文节选自:

作者:liuchengxu

链接:https://www.jianshu.com/p/9bbfd0a61fc2

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇下一篇

猜你喜欢

热点阅读