系统相关
首页 > 系统相关> > [Linux]Makefile的七次迭代

[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

标签:%.,sub,迭代,CC,Makefile,add,Linux,main,mult
来源: https://www.cnblogs.com/coderhu1/p/15516445.html