Makefile :项目管理工具
只将与修改的源文件相关的 文件进行编译,其他的进行连接。
stat test.c :可以查看一个文件的修改时间
touch test.c :更新文件的时间
make -p >file
vi file : Makefile 内建规则查看
#阶段三
makefile 变量声明,使用变量
obj = add.c sub.c mul.c dive.c main.c
app: $(obj)
gcc $(obj) -o app
$@表示目标,$^表示所以有的依赖, $< 表示依赖中的第一个
# 通用代码
src=$(wildcard *.c) //找到当前目录下所有 .c文件; $表示索引()里边的函数
obj=$(patsubst %.c,%.o,$(src));
target=app;
$(target):$(obj)
gcc $^ -o $@
目标:依赖
%.o :%.c
gcc -c $< -o $@
#clean 用来清除生成的中间文件和最终的目标文件
#伪文件clean,用来避免重名文件clean
# -rm 表示此条命令出错后继续执行后面的命令
# @ 表示不显示命令,只显示结果
.PHONY:clean
clean:
-rm -f *.o
-rm -f app
#阶段四
参考文件 GNU Makefile
CPPFLAGS= -Iinclude //include 是头文件目录
,如果没有可以空着不写
CFLAGS= -g -Wall //编译时的命令
LDFLAGS= -L../lib - //共享库的路径,如果没有可以空着不写
CC=gcc //编译器
#CC=arm-linux-gcc //嵌入式
src=$(wildcard *.c) //找到当前目录下所有 .c文件; $表示索引()里边的函数
obj=$(patsubst %.c,%.o,$(src));
target=app;
$(target):$(obj)
$(CC) $^ $(LDFLAGS) -o $@
%.o :%.c
$(CC) -c $< $(CFLAGS) $(CPPFLAGS) -o $@
.PHONY:clean
clean:
-rm -f *.o
-rm -f app
#彻底清除生成过程文件和生成配置文件
distclean:
rm /usr/bin/app
install:
cp app /usr/bin
test:
@echo $(src)
make -C src //可以指定要进入的目录,然后调用目录里边的Makefile文件