要玩耍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 命令可以换成相应操作系统的回收站♻️命令
网友评论