Makefile 知識點記錄
1. 依賴類型:normal Prerequisites,order-only prerequisites
normal Prerequisites:標準依賴具有兩層含義的聲明,一 它聲明瞭方法運行的順序,所有依賴的的方法必須在對象的方法運行之前運行完。二 它聲明瞭對象的依賴關係,如果有任何依賴比對象新,那麼目標對象就認爲是過期的,必須要重建。
order-only prerequisites:順序依賴,只取標準依賴的聲明一。它只聲明順序關係。不會因爲依賴的時間戳的更新而重建。
標準依賴和順序依賴的聲明方式如下
targets : normal-prerequisites | order-only-prerequisites
依賴之間用管道符號分隔,左邊的是標準依賴,右邊的是順序依賴。
例子:
OBJS := date_test
.phony: all clean
all: $(OBJS)
$(OBJS): date.c | version
$(CC) -o $@ $<
version:
date | xargs echo > version
clean:
rm -f $(OBJS) version
上面的例子中,編譯對象依賴於version,但是不會因爲向version中手動添加記錄而導致後邊的重新編譯。 date.c 是標準依賴, version是順序依賴。