我的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
Run Code Online (Sandbox Code Playgroud)
我添加了,.PHONY
但是它改变了任何东西:(
他总是BUILD, MV and CP
打电话。如果我从Makefile中删除它们,如果他是最新的(仅使用.OBJ),它将不会重建。再次感谢。
您正在移动libmy.a
到目录lib
。下次运行make时会寻找它libmy.a
,因为它不存在,它将被构建。
make将始终libmy.a
在当前目录中查找目标(对于您而言)。因此,如果将文件移动到另一个位置,make会认为该文件尚未创建。
经验法则是:目标的配方应始终创建目标命名的文件。
可能的解决方案:
NAME = lib/libmy.a
)限定目标名称(这可能是最简单的方法) 归档时间: |
|
查看次数: |
37 次 |
最近记录: |