- Makefile是一个工程管理工具,本质上是一个文件,这个文件中存放的是代码编译的规则。
- Makefile会根据文件的时间戳来决定工程内的文件本次是否需要编译。
- 时间戳:修改文件后会更新时间戳。
- 若文件的时间戳修改了,则执行Makefile工程文件的时候会重新编译修改时间戳的文件
- 若文件的时间戳没有修改,则执行Makefile工程文件的时候不会重新编译未修改时间戳的文件
- 提升效率,没有修改的文件不会重新编译。
objs:=11_SerSql.o 12_myfnc.o
Target:=q
CFLAGS:=-c -o
CC:=gcc
q:$(objs) head.h
$(CC) $(objs) -lsqlite3 -o $(Target)
11_SerSql.o:11_SerSql.c
@$(CC) 11_SerSql.c $(CFLAGS) 11_SerSql.o
12_myfnc.o:12_myfnc.c
@$(CC) 12_myfnc.c $(CFLAGS) 12_myfnc.o
clean:
rm $(objs)
# rm 11_SerSql.o 12_myfnc.o
do:
gcc ./21_tcpusr.c -o p
##两个版本
objs:=11_SerSql.o 12_myfnc.o
Target:=q
CFLAGS:=-c -o
CC:=gcc
LNKs:=-lsqlite3 -pthread
q:$(objs) head.h
$(CC) $^ $(LNKs) -o $@
%.o:%.c # %是统配符
@$(CC) $< $(CFLAGS) $@
clean:
rm $(objs)
# rm 11_SerSql.o 12_myfnc.o
do:
gcc ./21_tcpusr.c -o p