makefile編寫(一)基本規則

2021-08-02 11:18:09 字數 1438 閱讀 7101

一、乙個簡單的例子

建立乙個malefile檔案如下:

mian.o: main.c a.h

gcc -c main.c

1.o: 1.c a.h b.h

gcc -c 1.c

2.o: 2.c b.h c.h

gcc -c 2.c

2 3 cc = gcc

4 5 #debug

6 cflags = -i. -g -wall -ansi

7 8 #release

9 #cflags = -i. -o -wall -ansi

10 13 main.o: main.c a.h

14 $(cc) $(cflags) -c main.c

15 1.o: 1.c a.h b.h

16 $(cc) $(cflags) -c 1.c

17 2.o: 2.c b.h c.h

18 $(cc) $(cflags) -c 2.c

2 3 cc = gcc

4 5 installdir = bin

6 7 #debug

8 cflags = -i. -g -wall -ansi

9 10 #release

11 #cflags = -i. -o -wall -ansi

12 15 main.o: main.c a.h

16 $(cc) $(cflags) -c main.c

17 1.o: 1.c a.h b.h

18 $(cc) $(cflags) -c 1.c

19 2.o: 2.c b.h c.h

20 $(cc) $(cflags) -c 2.c

21 22 clean:

24 install:

25 @if [ -d $(installdir) ]; \

26 then \

29 echo "installed in $(installdir)"; \

30 else \

31 echo "the $(installdir) doesn't exist, please check!";\

32 fi

以上分別提供了debug和release版本。內嵌shell指令碼中每行結束需要以\結尾,這是要把shell指令碼連線成一行。並且需要注意\的格式,之氣在vim上編寫的時候,由於有幾個\沒有顯示高亮導致載編譯的時候無法判斷到shell指令碼連線為一行,導致程式編譯不過,查了好長時間,網上有的說是unix的編碼格式問題,但是試了也沒用。所以在編寫的時候一定要注意。

使用install和clean兩個目標,乙個用於安裝,乙個用於刪除所有的.o檔案。

make -f makefile3 clean 和 make -f makefile3 install。

makefile編寫規則

目標 要生成的目標檔案 依賴 目標檔案由哪些檔案生成 命令 通過執行該命令由依賴檔案生成目標 代表目標 代表全部依賴 第一依賴 第一變化的依賴 2020 8 3 wildcard可以進行檔案匹配 patsubst 內容的替換 makefile的變數 代表目標 代表全部依賴 第一依賴 第一變化的依賴 ...

Makefile檔案編寫規則

makefile 中包含五種內容 顯式規則,隱式規則,變數定義,指令 directive 和注釋。1.顯式規則 描述如何生成規則的目標,它列出了目標依賴的檔案,指定了產生或更新目標的命令。2.隱式規則 描述如何生成基於檔名的一類檔案,說明目標可能依賴於和其檔名類似的檔案,指定了相應的命令。3.指令 ...

makefile的編寫規則和示例

例一 在乙個demo目錄下有三個目錄 分別是test,include,lib test目錄下有三個目錄,分別是include和source和project,在目錄include下有三個檔案,分別是a.h,b.h,c.h,在source目錄下有三個檔案,分別是a.c,b.c,c.c,project目錄...