makefile实现对多文件、多目录的操作步骤
仅作个人复习笔记,以备后查。
首先: 建立一个目录"test", 并建立子目录“sub”
test 目录新建文件 :a.c; b.c
sub子目录新建文件:sa.c;sb.c
内容都比较 简单,因为简单,所以不列出来了。详细见下面操作步骤:
root@ubuntu:/home/mike# ls
test
root@ubuntu:/home/mike# cd test
root@ubuntu:/home/mike/test# ls
a.c b.c makefile sub
// makefile文件内容:
root@ubuntu:/home/mike/test# cat makefile
src=$(wildcard *.c ./sub/*.c)
dir=$(notdir $(src))
obj=$(patsubst %.c,%.o,$(src))
all:
@echo $(src)
@echo $(dir)
@echo $(obj)
@echo "end"
build:$(obj)
$(obj):%.o : %.c
$(CC) $(CFLAGS)$< -o $@
#$(obj):%.o : %.c
# $(CC) $(CFLAGS)$< -o $@
.PHONY:clean
clean:
rm -rf all $(obj)
root@ubuntu:/home/mike/test# cd sub
root@ubuntu:/home/mike/test/sub# ls
sa.c sb.c
root@ubuntu:/home/mike/test/sub# cd ..
root@ubuntu:/home/mike/test# ls
a.c b.c makefile sub
//文件 a.c的内容:
root@ubuntu:/home/mike/test# cat a.c
#include<stdio.h>
int main(void){
printf("i am main");
return 0;
}
//文件b.c的内容:
root@ubuntu:/home/mike/test# cat b.c
#include<stdio.h>
int main(void){
printf("i am b \n");
return 0;
}
root@ubuntu:/home/mike/test# make
a.c b.c ./sub/sa.c ./sub/sb.c
a.c b.c sa.c sb.c
a.o b.o ./sub/sa.o ./sub/sb.o
end
// 编译test下的所有 C文件,包括子目录里的C文件:
root@ubuntu:/home/mike/test# make build
cc a.c -o a.o
cc b.c -o b.o
cc sub/sa.c -o sub/sa.o
cc sub/sb.c -o sub/sb.o
root@ubuntu:/home/mike/test# ls
a.c a.o b.c b.o makefile sub
//编译后运行结果:
root@ubuntu:/home/mike/test# ./a.o
i am main
root@ubuntu:/home/mike/test# ./b.o
i am b
root@ubuntu:/home/mike/test#
实现的makefile文件比较简单,个人笔记存档!