Makefile學習之規則

2021-10-10 08:23:54 字數 2876 閱讀 3429

1 ifeq ($(debug)

,"true"

)2 cc = gcc -g #生成debug版本,才可以生成除錯資訊,對程式進行除錯,

3else

4 cc = gcc

5 endif

6.phony: all clean #偽目標,讓編譯器無條件執行,每次都會執行

7 all:test #這裡預設編譯test,hello是不編譯的,要編譯需要指定 make hello

8 test:

9 @echo "just for test"

10 hello:lcd.o player.o

11 $(cc)

-o hello lcd.o player.o #生成hello需要lcd.o和player.o

12 playe.o:player.c

13 $(cc)

-o player.o -c player.c

14 lcd.o:lcd.c

15 $(cc)

-o lcd.o -c lcd.c

16 clean:

17 rm -f lcd.o hello player.o

18~

執行結果

1 ifeq ($(debug)

,"true"

)2 cc = gcc -g #生成debug版本,才可以生成除錯資訊,對程式進行除錯,

3else

4 cc = gcc

5 endif

6.phony: all clean #偽目標,讓編譯器無條件執行

7 all:test1 test2

8 test1 test2: #會分別執行test1和test2

9 @echo "just for $@" #$@是目標變數

10 hello:lcd.o player.o

11 $(cc)

-o hello lcd.o player.o #生成hello需要lcd.o和player.o

12 playe.o:player.c

13 $(cc)

-o player.o -c player.c

14 lcd.o:lcd.c

15 $(cc)

-o lcd.o -c lcd.c

16 clean:

17 rm -f lcd.o hello player.o

18~

執行結果

1 ifeq ($(debug)

,"true"

)2 cc = gcc -g #生成debug版本,才可以生成除錯資訊,對程式進行除錯,

3else

4 cc = gcc

5 endif

6.phony: all clean #偽目標,讓編譯器無條件執行

7 all:hello

8 hello:lcd.o player.o

9 $(cc)

-o hello lcd.o player.o #生成hello需要lcd.o和player.o

10%.o:%

.c # %是模式匹配,會自動匹配到所有的滿足該格式的檔案

11 $(cc)

-o $@ -c $^ #$^是代表以來檔案

12 clean:

13 rm -f lcd.o hello player.o

14

執行結果

1 ifeq ($(debug)

,"true"

)2 cc = gcc -g #生成debug版本,才可以生成除錯資訊,對程式進行除錯,

3else

4 cc = gcc

5 endif

6.phony: all clean #偽目標,讓編譯器無條件執行

7 all:hello

8 hello:lcd.o player.o

9 $(cc)

-o hello lcd.o player.o #生成hello需要lcd.o和player.o

10 #%

.o:%

.c # %是模式匹配,會自動匹配到所有的滿足該格式的檔案

11 # $(cc)

-o $@ -c $^ #$^是代表以來檔案

12 clean:

13 rm -f lcd.o hello player.o

14

這兩句注釋掉也是可以的

執行結果

命令執行:每條命令,make會開乙個程序,每條命令都是併發執行的。

用";"將多個命令放在乙個程序中執行,也就是順序執行

Makefile系列之規則

語法 targets prerequisites command command targets 目標,可以是空格分開的多個檔案,也可使用萬用字元 prerequitites 依賴,根據依賴更新後是否需要重建目標,將依賴分為兩種,用 進行分割,需要 不需要 把更新後不需要重建目標的依賴稱為 orde...

Makefile學習總結之規則的命令

通常系統中可能存在多個不同的shell。但在make處理makefile過程中,如果沒有明確指定,那麼對所有規則中命令列的解析使用 bin sh 來完成 命令回顯 make在執行命令列之前會把執行的命令列輸出到標準輸出裝置。如果規則的命令列以字元 開始,則make在執行這個命令時就不會回顯這個將要被...

makefile學習筆記 書寫規則 規則舉例

20180413 makefile學習筆記 書寫規則 規則舉例 規則包含兩個部分,乙個是依賴關係,乙個是生成目標的方法。在makefile中,規則的順序是很重要的,因為,makefile中只應該有乙個最終目標,其他的目標都是被這個目標所連帶出來的,所以一定要讓make知道你的最終目標是什麼。一般來說...