[Linux]Makefile的七次迭代

basic compile procedure

app: add.c div.c main.c mult.c sub.c
	gcc -o app add.c div.c main.c mult.c sub.c
app: add.o  div.o  main.o  mult.o  sub.o
	gcc -o app add.o div.o main.o mult.o sub.o

add.o: add.c
	gcc -c add.c -o add.o

div.o: div.c
	gcc -c div.c -o div.o

main.o: main.c
	gcc -c main.c -o main.o

mult.o: mult.c
	gcc -c mult.c -o mult.o

sub.o: sub.c
	gcc -c sub.c -o sub.o

use self-defined variables and pre-defined variables

target=app

$(target): add.o  div.o  main.o  mult.o  sub.o
	$(CC) -o $@ $^

add.o: add.c
	$(CC) -c $< -o $@

div.o: div.c
	$(CC) -c $< -o $@

main.o: main.c
	$(CC) -c $< -o $@

mult.o: mult.c
	$(CC) -c $< -o $@

sub.o: sub.c
	$(CC) -c $< -o $@

pattern matching

target=app

$(target): add.o  div.o  main.o  mult.o  sub.o
	$(CC) -o $@ $^
  
%.o: %.c
	$(CC) -c $< -o $@

use functions

src=$(wildcard ./*.c)
objs=$(patsubst %.c, %.o, $(src))
target=app

$(target): $(objs)
	$(CC) -o $@ $^
  
%.o: %.c
	$(CC) -c $< -o $@

add clean target

src=$(wildcard ./*.c)
objs=$(patsubst %.c, %.o, $(src))
target=app

$(target): $(objs)
	$(CC) -o $@ $^
  
%.o: %.c
	$(CC) -c $< -o $@
  
clean:
	rm $(objs) -f

change to phony dependency

src=$(wildcard ./*.c)
objs=$(patsubst %.c, %.o, $(src))
target=app

$(target): $(objs)
	$(CC) -o $@ $^
  
%.o: %.c
	$(CC) -c $< -o $@
 
.PHONY:clean
clean:
	rm $(objs) -f
posted @ 2021-11-06 12:24  herrhu  阅读(52)  评论(0编辑  收藏  举报