以下是我的makefile的片段:
all: $(TARGET)
$(C_OBJS): %.o: %.c
@ echo -n "Compiling " $*.c;
@ $(CC) -c $(CFLAGS) $*.c -o $*.o
@ echo " ...... Done"
$(TARGET): $(C_OBJS)
@ $(AR) rus $@ $(C_OBJS);
print_cflags:
@ echo "CFLAGS: " $(CFLAGS) "\n"
前进,我想
CFLAGS
一次。make: Nothing to be done for "all"
消息。在这种情况下,打印CFLAGS
是可选的。我觉得,可以通过在$(C_OBJS): %.o: %.c
内部设置一个计数器来实现。但有没有更好的方法来实现这一目标?
我知道这是一个非常具体的问题,但任何帮助将不胜感激。
答案 0 :(得分:1)
Etan提供了许多不错的选择。这是另一个,假设您的GNU make版本足够新以支持eval
:
print_CFLAGS := $(CFLAGS)
$(C_OBJS): %.o: %.c
@ $(if $(print_CFLAGS),echo "CFLAGS: $(print_CFLAGS)" $(eval print_CFLAGS:=))
@ echo -n "Compiling " $*.c;
@ $(CC) -c $(CFLAGS) $*.c -o $*.o
@ echo " ...... Done"