makefile:当前目录下所有.c文件编译为单独的可执行目标文件

        有时候会遇到这种情况,比如在学习研究的过程中,一个目录下写了很多c语言的源文件,每个都是单独可执行的。可能每个都是一个单独的示例。

       这时候需要一个makefile,可以单独将每一个文件编译成一个可执行文件,不用每写一个文件便得gcc -c xxx.c -o xxx。

       下面是一个简单的写法:可以将当前目录下所有xxx.c文件编译成单独的xxx文件。

PHONY: all  clean
SRC=$(wildcard *.c)
OBJ=$(SRC:%.c=%.o)
BIN=$(OBJ:%.o=%)

CC=gcc
CFLAGS=-Wall -g -c

all:$(BIN)

$(BIN):%:%.o
        $(CC) $^ -o $@
$(OBJ):%.o:%.c
        $(CC) $(CFLAGS) $^ -o $@

clean:
        rm $(OBJ) $(BIN)

如果使用自动推导的话,可以更简单:

.PHONY: all  clean
SRC=$(wildcard *.c)
BIN=$(SRC:%.c=%)

CC=gcc
#CFLAGS=-Wall -g -c

all:$(BIN)

clean:
        rm  $(BIN)
发布了136 篇原创文章 · 获赞 81 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/x763795151/article/details/100048000