makefile中的变量目标

时间:2011-06-30 23:22:53

标签: makefile gnu-make

我正在尝试编译一组目标。然而它似乎只做第一个。下面是我的makefile的缩写,显示错误。

  OBJECTS = abc def ghi
  SOURCES = abc.c def.c ghi.c

  $(OBJECTS):     $(SOURCES)
          @echo target is $@, source is $<

在shell中,

  $ touch abc.c def.c ghi.c
  $ make

当我运行make时,我得到以下输出:

  target is abc, source is abc.c

所以它似乎只是在运行第一个目标。

如果我更换$&lt;使用$ ^,输出为:

  target is abc, source is abc.c def.c ghi.c

我的问题是,是否可以使用(%:%)模式对变量进行扩展?

1 个答案:

答案 0 :(得分:20)

试试这个:

  OBJECTS = abc def ghi

  all: $(OBJECTS)

  $(OBJECTS):%:%.c
          @echo target is $@, source is $<

麻烦是

  1. 默认目标(如果你只输入`make`就是Make选择的那个)是makefile中的第一个目标,即`abc`。
  2. 所有来源每个对象的先决条件。也就是说,这三个来源都是`abc`的先决条件。它们也是`def`和`ghi`的先决条件。