makefile
两种写法:
1 推荐
app:sub.o add.o mult.o div.o main.o
gcc sub.o add.o mult.o div.o main.o -o app
sub.c:sub.c
gcc -c sub.c -o sub.o
add.o:add.c
gcc -c add.c -o add.o
mult.o:mult.c
gcc -c mult.c -o mult.o
div.o:div.c
gcc -c div.c -o div.o
main.o:main.c
gcc -c main.c -o main.o
编译时会检查.c 文件和 .o文件的生成时间,若.o文件比.c文件时间早,则重新编译,反之。
即 为改变的文件不需要二次编译。
### 2,不推荐
```bash
app:sub.c add.c mult.c div.c main.c
gcc sub.c add.c mult.c div.c main.c -o app
当其中只有一个文件发生改变时,会重新编译所以的文件。所以不推荐使用。
1 简化
src=$(wildcard ./*.c)
objs=$(patsubst %.c, %.o, $(src))
target=app
$(target):$(objs)
$(CC) $(objs) -o $(target)
%.o:%.c
$(CC) -c $< -o $@
#如果没有伪目标 这个clean总是最新的
.PHONY:clean
clean:
rm $(objs) -f
# 使用
make clean
#执行即可没有.o文件