美文网首页
2018-03-16 Makefile学习笔记

2018-03-16 Makefile学习笔记

作者: Duckie | 来源:发表于2018-03-16 12:16 被阅读12次

    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

    來源:简书

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

    相关文章

      网友评论

          本文标题:2018-03-16 Makefile学习笔记

          本文链接:https://www.haomeiwen.com/subject/sjvlqftx.html