makefile學習筆記(1)- @^$符號的意義

makefile的基本用法如下,

target:components    ------<依賴語句>
TAB rule                        ------<規則語句>
這兩行一般同時出現。

第一行表示的是依賴關係,
舉例:某個.o目標文件依賴幾個.c和.h,那麼可以這麼寫:  main.o:main.c mytool1.h mytool2.h
又如:可執行文件依賴幾個.c文件,那麼可以這麼寫:test_exe: main.o comfunc.o
第二行表示規則(注意,規則前必須有一個tab鍵),所謂規則,就是怎麼把依賴文件變成目標文件,也即,使用什麼編譯器,帶哪些編譯選項,
舉例:把hello.o變成可執行文件,這麼寫:gcc -o hello hello.o,其中-o選項後面緊跟目標文件(目標文件可能是可執行文件、.o文件、彙編文件等)。

 

下面來看一下$@、 $^ 、%< 這三個符號,它們很常見,而且只會出現在”規則語句”中,其中:
$@代表目標文件,前文已經提到,<規則語句>前面一般會有一條<依賴語句>,依賴語句中已經指出了目標文件是誰;
$^代表所有的依賴文件;
$<代表第一個依賴文件。

下面利用這三個符號,來簡化一下make語句:

原makefile文件:
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o

簡化後:
main:main.o mytool1.o mytool2.o
gcc -o $@ $^

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章