網頁

2014年5月23日 星期五

如何使用Makefile recursive make

- 問題:
如何使用make來使makefile recursive make ?
(也就是你有一個project此project又由各個子component組成)


-- 單純只make的方法:
使用 make -C
注意: $(SUBDIR)一定要設.PHONY不然不會有任何執行的動作


-- 如果要套用make clean和make install到各個子目錄又該如何寫?
方法有點tricky,我們在上面使用 $(SUBDIR)的方式就好像使用for迴圈一樣一個個目錄進去make。
但是有個問題: 如果make all了但是邏輯網下走$(SUBDIR)時我們就無法分辨: make all, make install, 還是make clean的情況.
http://lackof.org/taggart/hacking/make-example/的作者就提出一個方法: 讓各個targets(all, install, clean)有自己的$(SUBDIR)。
當進入自己的$(SUBDIR)時才真的做字串的替換。這樣子就可以解掉使用make -C只能make all的問題。


注意: 題外話作者不建議在makefile使用for的方式一個個進去make。因為其缺點就是
- 1. 無法享有concurrent make的好處。而且
- 2. 如果有make fail也不會停下來。

-- Ref:

沒有留言:

張貼留言