蓝天,小湖,湖水中一方小筑

偷懒用的Makefile

关键字: 偷懒, makefile

经常写些测试的小程序,有时一个目录下N多C程序要手动编译,想着头都大,于是乎就想偷懒了,花了半小时攒了个Makefile:

CC=gcc
CFLAGS=-g
RM=rm -f

SRCS=$(wildcard *.c)
OUTS=$(patsubst %.c,%,$(SRCS))

all:$(OUTS)

$(OUTS):%:%.c
    $(CC) $(CFLAGS) -o $@ $<

clean:
    $(RM) $(OUTS)

其实很简单,先是设置编译的命令与编译选项,还有删除命令,紧接着通过内置的两个函数把源文件名和二进制文件存到变量中去。然后就是编译目标,默认的all依赖于所有 的二进制文件,而每个二进制文件都跳到第二个条件中,从%.c编译出来名为%的二进制文件,%是通配符,表示匹配在$(OUTS)的文件名,由于上面的设置,这里就是 不带后缀的二进制文件。最后一个用来清除已经编译出来的二进制文件。

丢到某个目录下运行,它会去找所有的.c文件,编译出二进制文件,二进制文件的文件名就是.c文件去掉扩展名。还可以单独编译单个的二进制文件,就是在make后直接 接二进制文件名。嗯,就这些了。