這陣子程式量偏多又苦於沒有硬體和Debugger工具可以測試軟體的安全性, 想起過去看到成大資工系的piko-rt專案使用make做build時可以順便做測試, 覺得這個方法很不錯所以特地撥空寫了這個筆記文
格式
Makefile格式是由目標(target),相依檔案(filename),和規則(rule)組成, 必須注意規則前面的空白是tab
# <target>: <filename>
# <rule>
all: main.c
gcc main.c -o main.o
macro
當專案的檔案非常多的時候, 檔案的相依性會變得非常多打起來非常麻煩, 使用macro可以更方便的修改資料, 還有一些參數設定等等功能
# 宣告
變數名稱 = 變數資料
# 呼叫
$(變數名稱)
還有一個不錯的功能, 假設有個.c檔案編譯之後會產生一個.o檔案, 這時候可以用這個方法直接幫macro宣告過的檔案全部換副檔名
SOURCE = aa.c bb.c cc.c
OBJECT = $(SOURCE:.c=.o)
# 這時候 $(OBJECT) 就是 aa.o bb.o cc.o 了
特殊符號
符號 | 功能 |
---|---|
$< | 屬於第一個相依項目 |
$@ | 當前目標相依項目 |
$<
屬於第一個相依的項目
test: main.c main.h
gcc -c $<
則編譯時會變成
gcc -c main.c
$@
當前目標相依項目
test: main.c main.h
gcc -c $< -o $@
則編譯時期會變成
gcc -c main.c -o test.exe # windows mingw32
gcc -c main.c -o test # Linux gcc