【发布时间】:2020-09-05 11:39:25
【问题描述】:
我正在尝试删除所有以这种形式存储在变量中的 .o 、 .i 、 .asm 、 .d 文件:
OBJS := $(SRCS:.c=.o)
PP := $(SRCS:.c=.i)
ASM := $(SRCS:.c=.asm)
DEP := $(SRCS:.c=.d)
使用此代码:
SRCS = text1.c\
text2.c
OBJS :=$(SRCS:.c=.o)
PP := $(SRCS:.c =.i)
ASM := $(SRCS:.c =.asm)
DEP := $(SRCS:.c =.d)
.PHONY : clean
clean :
rm -f $(OBJS) $(PP) $(ASM) $(DEP)
但它只将 .o 应用于 $(OBJS),如下所示:
rm -f text1.o text2.o text1.c text2.c text1.c text2.c text1.c text2.c
我不明白为什么它没有用 *.i 或 *.asm 等替换 *.c 文件。
我用这个来解决它:
.PHONY: clean
clean:
rm -f *.o *.i *.asm *.d
但我仍在学习“make”所以我想知道为什么第一个不起作用..提前谢谢你。
【问题讨论】:
-
欢迎来到 Stack Overflow。请查看我们的intro section,尤其是minimal complete examples 上的页面。我无法使用您向我们展示的代码重现您的问题。
-
变量赋值中有错误的空格。例如,将
$(SRCS:.c =.i)替换为$(SRCS:.c=.i)。