Ubuntu
GCC
Makefile手冊 4.13 Generating Prerequisites Automatically
%.d: %.c
@set -e; rm -f [email protected]; \
$(CC) -M $(CPPFLAGS) $< > [email protected]$$$$; \
sed ’s,\($*\)\.o[ :]*,\1.o [email protected] : ,g’ < [email protected]$$$$ > [email protected]; \
rm -f [email protected]$$$$
sources = foo.c bar.c
include $(sources:.c=.d)
上網查了語法解釋 最終會產生一個foo.d,假設prerequisite是foo.c
然後內容是:foo.o foo.d: foo.c foo.h defs.h common.h
1.想請問include後 下一行是不就應該要下recipe了? 不然新增一個規則沒recipe是
做什麼呢? 因為我看我的一個專案的makefile就是在最後一行include 一個.d檔,但
沒有recipe。
2.foo.o foo.d: foo.c .....common.h ,為什麼foo.d要擺在target的位置呢?
不是已經根據prerequisite %.c(foo.c) 判斷要不要產生.d檔了嗎?
謝謝