C语言玩耍0 - 操场上的Makefile

要玩耍C语言,得编译,编译的时候,就要用到gcc。
但是呢,我喜欢在一个操场上玩耍好几个C语言,这个时候就要用到Makefile了。
比如,我在一个叫playground的操场上有n个.c文件,然后我想一口气全部编译。
可以

gcc -o a a.c
gcc -lm -o  b b.c
gcc  -g -lm -o b b.c
gcc -pg -lm -o c c.c

这得把人累死吧...
反正是玩耍,我这些flag给它统一算了,所以我写了这么一个Makefile

SRC=$(wildcard *.c)
PROG=$(patsubst %.c,%,$(SRC))
CC_FLAGS=-Wall -lm -pg -g

all: $(PROG)

%: %.c
    cc -o $@ $< $(CC_FLAGS)
clean:
    rm $(PROG)

这样一来,就可以一次性编译所有的C代码了。

稍微做点笔记:
$(命令) 把输出变成字符串,和shell一样。
$(变量名) 把变量名变成字符串,一定要这么写。
wilrdcard 后面用的是*,patsubst 后面用的是%,target, prerequisites这种用的也是%,all代表所有的PROG都要编译。
$@ $< $^ 分别代表 target, 1st prereq, prereq list

注:
rm 命令可以换成相应操作系统的回收站♻️命令

你可能感兴趣的:(C语言玩耍0 - 操场上的Makefile)