makefile实现对多文件、多目录的操作步骤

时间:2021-11-20 12:45:50

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:cleanclean:        rm -rf all $(obj)root@ubuntu:/home/mike/test# cd subroot@ubuntu:/home/mike/test/sub# lssa.c  sb.croot@ubuntu:/home/mike/test/sub# cd ..root@ubuntu:/home/mike/test# lsa.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.ca.c b.c sa.c sb.ca.o b.o ./sub/sa.o ./sub/sb.oend// 编译test下的所有 C文件,包括子目录里的C文件:
root@ubuntu:/home/mike/test# make buildcc a.c -o a.occ b.c -o b.occ sub/sa.c -o sub/sa.occ sub/sb.c -o sub/sb.oroot@ubuntu:/home/mike/test# lsa.c  a.o  b.c  b.o  makefile  sub
//编译后运行结果:root@ubuntu:/home/mike/test# ./a.oi am main
root@ubuntu:/home/mike/test# ./b.oi am  b root@ubuntu:/home/mike/test# 

实现的makefile文件比较简单,个人笔记存档!