[英]makefile rebuild even is it up to date
我的 makefile 總是重建,不明白為什么..
這里是:
SRC = $(DIR)/my_getnbr.c \
$(DIR)/my_isneg.c \
$(DIR)/my_putchar.c \
OBJ = $(SRC:.c=.o)
DIR = lib/my
LIB_DIR = lib
NAME = libmy.a
MYH = include/my.h
BUILD = ar rcs $(NAME) $(DIR)/*.o
MV = mv $(NAME) $(LIB_DIR)
CP = cp $(MYH) $(DIR)
all: $(NAME)
$(NAME): $(OBJ)
$(BUILD)
$(MV)
$(CP)
clean:
rm -f $(OBJ)
fclean:clean
rm -f $(LIB_DIR)/$(NAME)
re: fclean all
.PHONY: fclean all re clean
我添加了.PHONY
但它改變了任何東西:(
他總是做BUILD, MV and CP
調用。 如果我從 Makefile 中刪除它們,如果他是最新的(僅使用 .OBJ),它將不會重建。 再次感謝。
您正在將libmy.a
移動到目錄lib
。 下次你運行 make 它會尋找libmy.a
並且因為它不存在所以它會被構建。
make 將始終在當前目錄中查找目標(在您的情況下為libmy.a
)。 因此,如果您將文件移動到另一個地方,make 會認為該文件尚未創建。
經驗法則是:目標的配方應始終創建由目標命名的文件。
可能的解決方案:
NAME = lib/libmy.a
)限定目標名稱(在您的情況下可能最簡單)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.