簡體   English   中英

Makefile每次都會構建所有內容

[英]Makefile builds everything each time

我有以下Makefile(減少為忽略無關的內容):

BUILD_DIR=./build
OBJS = \
  $(BUILD_DIR)/main.o \
  $(BUILD_DIR)/common.o \
  ...

roo: $(OBJS)
    $(CXX) -o $@ $(OBJS) $(LFLAGS)

.PHONY: $(BUILD_DIR)
$(BUILD_DIR):
    mkdir -p $(BUILD_DIR)/passes

$(BUILD_DIR)/%.o: src/%.cpp $(BUILD_DIR)
    $(CXX) -o $@ -c $< $(CFLAGS)

但是,每次都會重新編譯每個目標文件,甚至以為我遵循的規則是在每個非語音目標中直接使用$@

我不認為這是一個重復的這個 ,因為我申請的子目錄中的規則,而不是在食譜,但我可能是錯了嗎? 如何獲得Make來正確跟蹤構建目錄中的依賴關系?

您已經說過$(BUILD_DIR)/%.o取決於$(BUILD_DIR) ,但是每次將文件添加到該目錄時都會觸摸該目錄(例如,此規則本身)。 也就是說, $(BUILD_DIR)始終比其目標新。

您似乎要自動創建構建目錄。 我認為最好的方法是

$(BUILD_DIR)/%.o: src/%.cpp
    mkdir -p $(BUILD_DIR)/passes
    $(CXX) -o $@ -c $< $(CFLAGS)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM