我在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
但它不起作用,我怎么能这样做?
答案 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
构建的,那么它将使用一组特殊的变量值。