yuhao's map Let the Dream come true.

make 筆記

2017-12-22
C
 

這陣子程式量偏多又苦於沒有硬體和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

參考來源


Similar Posts

Comments