MakeFile

1.基本语法规则:

  目标:依赖文件

       [Tab]command

       或  目标:依赖文件; command

2.伪目标

  .PHONY: 目标  

  特点:伪目标的特点为总是被执行,故其依赖的目标总不如改目标新

       应用:

  1.无依赖文件

  .PHONY:clean

  clean:

    commands

  没有依赖文件,文件"clean"始终是最新的,命令永远不会执行;为避免这个问题,可使用".PHONY"指明该目标。

       避免和同名文件冲突(防止存在和PHONY执行目标的名称相同的文件, 避免和文件名重名),显示指出文件为伪目标,make clean

  2.有依赖文件

       all: prog1 prog2 prog3

  .PHONY: all

  prog1: prog1.o utils1.o

    cc -o prog1.c utils1.c

  prog2: prog2.o utils2.o
    cc -o prog2.c utils2.c

  prog3: prog3.o utils3.o
    cc -o prog3.c utils3.c

  输入make后,生成所有的文件

3.自动生成依赖性

  main.o:main.c (defs.h可省略)

    gcc -MM main.c

4.忽略错误

  exec:

    -cd /home/zhangfan

    pwd

5.变量

  objects = program.o foo.o utils.o

  program: $(objects)   会展开

       定义变量用“=”,导致下文中对变量的定义影响上文

        “:=” 使得前面的变量不能使用后面的变量

6.通配符

  objects = $(wildcard *.o)     *为通配符

7.define关键字

  define two-lines

  echo foo

  echo $(bar)

  endef

8.override指示符

  变量为通过make命令行参数设置,则Makefile将忽略这个变量的赋值,若想在Makefile中设置这类参数的值则使用override

  override <variable> = <value>

  override <variable> := <value>

原文地址:https://www.cnblogs.com/chengxuyuandashu/p/3581914.html