makefile實現對多檔案 多目錄的操作步驟

2021-06-27 11:14:50 字數 1967 閱讀 4602

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

#includeint main(void)

//檔案b.c的內容:

root@ubuntu:/home/mike/test# cat b.c

#includeint main(void)

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

Makefile多檔案編譯

include test.h main main.c makefile makefile obj makefile src eat eat.c eat.h makefile makefile test.c test.htest.件 include includeint testprint 將test...

多目錄下多檔案 makefile編寫

前面已經分享了單目錄項下多檔案的makefile的編寫,現在來看看多目錄下多檔案makefile的編寫 在做專案時,一般檔案都會分幾個目錄來存放 基本的是 include bin src obj lib tools 這幾個檔案 我先說下我的檔案存放目錄,用ls r可以檢視到所有檔案 include ...

Linux多原始檔Makefile模版

編譯核心模組時,乙個原始檔的makefile模板到處都是 obj m module.o kerneldir lib modules shell uname r build pwd shell pwd default make c kerneldir m pwd modules clean rm f ...