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知道你的最終目標是什麼。一般來說...