如何在调用目标时更改变量值

时间:2015-10-07 08:52:49

标签: makefile gnu-make

我在Makefile(GNU)中有以下内容

DLIB =  $(DLIB_STATIC)
DLIBFLAGS = $(DLIB_STATIC)
DLIB_BUILDS =  $(DLIB_STATIC) LIBDDUMMY

# DLIB =  $(DLIB_SHARED)
# DLIBFLAGS = -Llib -lD
# DLIB_BUILDS =  $(DLIB_SHARED)

all: BUILDALL TB
tgt2: BUILDALL TB

TB: $(DLIB_BUILDS)

我需要修改DLIB, DLIBFLAGS & DLIB_BUILDS的值,如下所示

DLIB =  $(DLIB_SHARED)
DLIBFLAGS = -Llib -lD
DLIB_BUILDS =  $(DLIB_SHARED)

调用tgt2时。

我试过了

TEMP:
  DLIB =  $(DLIB_SHARED)
  DLIBFLAGS = -Llib -lD
  DLIB_BUILDS =  $(DLIB_SHARED)

tgt2: TEMP BUILDALL

但它不起作用,我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

GNU make关于target-specific variable values的概念。只需将变量的赋值放在目标的先决条件之下:

tgt2: DLIB = $(DLIB_SHARED)
tgt2: DLIBFLAGS = -Llib -lD
tgt2: DLIB_BUILDS = $(DLIB_SHARED)

tgt2: BUILDALL

这样,如果BUILDALL目标是通过tgt2构建的,那么它将使用一组特殊的变量值。