我正在尝试编译一组目标。然而,它似乎只做了第一个。下面是我的makefile的一个剪辑,显示了错误。
OBJECTS = abc def ghi
SOURCES = abc.c def.c ghi.c
$(OBJECTS): $(SOURCES)
@echo target is $@, source is $<
壳内,
$ touch abc.c def.c ghi.c
$ make
当我运行make时,我得到以下输出:
target is abc, source is abc.c
因此,它似乎只是在运行第一个目标。
如果我替换$<对于$^,输出为:
target is abc, source is abc.c def.c ghi.c
我的问题是,是否可以像(%:%(模式那样对变量执行展开
试试这个:
OBJECTS = abc def ghi
all: $(OBJECTS)
$(OBJECTS):%:%.c
@echo target is $@, source is $<
问题是
- 默认目标(如果您只键入"Make",Make会选择该目标(是makefile中的第一个目标,即"abc"。
- 您使所有源成为每个对象的先决条件。也就是说,这三个来源都是"abc"的先决条件。它们也是"def"one_answers"ghi"的先决条件。