我有一個Makefile包含了建立一個小項目和清理它的規則。例如:如何在Makefile中創建'build'和'clean'的'重建'規則?
CC:=gcc
LD:=gcc
SOURCES:=$(wildcard src/*.c)
OBJS:=$(SOURCES:src/%.c=build/%.o)
TARGET:=bin/program
all: $(TARGET)
$(TARGET): $(OBJS)
@mkdir -p bin
$(LD) $+ -o [email protected]
build/%.o: src/%.c
@mkdir -p build
$(CC) $+ -c -o [email protected]
clean:
rm -rf $(OBJS)
rm -rf $(TARGET)
rmdir bin
rmdir build
.PHONY: clean all
我現在在創建規則rebuild
這將依次執行clean
和all
感興趣。我沒有看到如何正確實現正確的順序。
我所看到的解決方案對我而言是錯誤的。
rebuild: clean all
.PHONY: rebuild
自然是錯誤的,因爲有依賴是在其出現的順序實際執行不能保證。 all
可能在clean
之前執行。
我已經看到答案,提示僅依賴訂單的依賴關係,例如
rebuild: | clean all
.PHONY: rebuild
據我所知,這並沒有解決問題。如果你說a: | b c
這意味着a
取決於b
和c
,但如果採取b
或c
,它不會強制執行a
規則。它與訂購的依賴關係無關。
我現在看到的推出化妝的新實例,唯一的選擇具有
rebuild : clean
make build
我真的想避免推出新作實例做一些簡單的那樣!
我做了所以有些reasearch。我看過類似的問題,但沒有正確答案。對我來說,制定目標.PHONY
或使用僅依賴訂單的依賴關係不是解決方案。