我要生成Makefile中這樣定義規則的Makefile規則對於許多PROG使用定義生成與eval函數
CC = gcc
LD = gcc
CFLAGS = -g
LDFLAGS = -g
PROGS = test1 test2
SRCS_test1 = test1.c
SRCS_test2 = test2.c
$(foreach prog, $(PROGS), $(eval OBJS_$(prog) = $(SRCS_$(prog):%.c=%.o)))
.PHONY: all clean
all: $(PROGS)
define PROG_template
$(1): $$(OBJS_$$(1))
@echo ------------------
@echo $(1)
@echo $$(OBJS_test1) $$(OBJS_test2)
@echo $$(OBJS_$(1))
@echo $$^
@echo -----------------
$$(LD) $$(LDFLAGS) -o [email protected] $$^
endef
$(foreach prog, $(PROGS), $(eval $(call PROG_template, $(prog))))
%.o: %.c
@echo compiling [email protected]
$(CC) $(CFLAGS) -c -o [email protected] $<
clean:
rm -f $(OBJS_test1) $(OBJS_test2) $(PROGS)
輸出這樣
------------------
test1
test1.o test2.o
-----------------
gcc -g -o test1
GCC沒有提示輸入文件。 我的Makefile有什麼問題? 首先感謝。 對不起,我的英語很差。
GNU使第4版是狡詐編寫腳本。你應該考慮這樣做。 – 2014-11-02 08:32:02