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文件比较简单,个人笔记存档!