makefile實現對多文件、多目錄的操作步驟

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文件比較簡單,個人筆記存檔!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章