29

我在makefile中有一个目标:

all: $(TARGETS)

我想要一个变体,它的不同之处all仅在于它设置了一个环境变量。就像是:

all-abc: $(TARGETS)
    ABC=123

但这不起作用,因为在设置变量之前处理了依赖项。我考虑过在真正设置环境变量之前有另一个依赖项,但我认为环境不会跨目标持续存在。也就是说

abc:
    ABC=123
all-abc: abc $(TARGETS)

不起作用。我最终想要能够做的是

$ make all-abc

代替

$ ABC=123 make

是否可以设置这样的环境变量?

(GNU Make 3.82)

4

1 回答 1

44

尝试这个:

all:
    @#usual rule, if you call `make all-abc`, this will print "123"
    @echo $(ABC)

all-abc: ABC=123
all-abc: all
    @#what you put here it's going to be executed after the rule `all`
于 2013-03-05T17:49:30.160 回答