pretty code
2008年9月2日 星期二
makefile 概述
如果 make 後面不指定 makefile name(gnu make use -f)
則預設使用當前路徑下的 makefile。
如果 make 後面不加 target
則預設去找第一個(本例的 test)
故只會印出 Just Test 的字串。
一般來說會將 all 擺在第一個
也就是預設 make 是做 make all。
make all 的順序:
1. 先找 mytest 的 target。
2. 做 mytest 前必須要有 main.o, TestDef.o。
3. 找到 main.o 的 target。
4. 做該 target 的事。
5. 找到 TestDef.o 的 target。
6. 做該 target 的事。
7. 最後做 mytest 要做的事,編出 mytest 的執行檔。
一些符號的意義:
- 表示忽略錯誤
@ 表示不印出訊息
以下來自 "http://www.study-area.org/cyril/opentools/opentools/x1176.html"
%.o: %.c
%表示所有相對於後面先決條件的檔名的意思,他不是*,因為他有一對一的相對應關係,foo.o 就要找foo.c。
foo.o: foo.c foo.h
$@ -- foo.o
$* -- 這個只有在內隱規則中有用。表示樣式或副檔名規則中對應到的字串。
$< -- foo.c
$? -- 同一個規則的所有先決條件名,但是只有原始程式碼改過的比 obj 檔新才會符合,也就是比 target 還新的先決條件檔案。
$^-- 所有先決條件,但是有的 make 像 solaris make 可能不認得這個自動變數。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言