我试图编写一个包含先决条件中使用的目标特定变量的makefile,如下所示
SOURCES = a.c b.c
.SECONDEXPANSION:
%.o: %.c
@echo gcc -o $@ $<
1: SOURCES += main_1.c
1: obj
2: SOURCES += main_2.c
2: obj
obj: OBJECTS = $(patsubst %.c, %.o, $(SOURCES))
obj: build
build: $$(OBJECTS)
@echo gcc -o exe $(OBJECTS)
当然,我的代码$(SOURCES)
仅a.c b.c
而$$(OBJECTS)
为空...如果我写$$(SOURCES)
,我会收到错误No rule to make target $(SOURCES)
。
有没有办法让这项工作?或者我必须定义变量以在1和2之间切换? (例如make -D1
和#ifdef
)