假设我有一个Makefile:
all: $(BINARY)
$(BINARY): $(OBJS) $(DEBUG_OBJS)
#Link objects here
$(OBJS): headers
#Compile code into objects without debug option
$(DEBUG_OBJS): headers
#Compile code into objects with debug option
headers:
#Create on-the-fly header files如您所见,$(OBJS)和$(DEBUG_OBJS)都需要目标headers。问题是,headers会被调用两次吗?另外,下面的代码是否等同于上面的代码:
all: $(BINARY)
$(BINARY): headers $(OBJS) $(DEBUG_OBJS)
#Link objects here
$(OBJS):
#Compile code into objects without debug option
$(DEBUG_OBJS):
#Compile code into objects with debug option
headers:
#Create on-the-fly header files在这种情况下,$(BINARY)会在$(OBJS)和$(DEBUG_OBJS)之前调用headers吗
发布于 2010-12-02 03:40:42
不,headers只会做一次。
您可以编写一个简单的makefile来测试它:
all: foo bar
foo: baz
bar: baz
baz:
echo 'hi'在执行make时,hi将只被回显一次。
在第二种情况下,make认为$(BINARY)首先依赖于headers,所以它会在其他依赖项之前执行headers。
https://stackoverflow.com/questions/4328282
复制相似问题