在Makefile中,如何在构建任何其他对象之前声明应该始终存在的目标?

在Makefile中,如何在构建任何其他对象之前声明应该始终存在的目标?,makefile,Makefile,我有一个项目,它构建了几个人工制品,包括共享库、静态库和单元测试可执行文件。该Makefile中的大多数目标使用Google的协议缓冲区,该缓冲区构建在该项目的子模块中 现在,几乎该Makefile的所有目标都需要构建协议缓冲区,但必须为所有目标添加一个先决条件似乎很乏味那么,是否有方法指定在生成任何其他目标之前,Makefile中的目标始终存在?类似的方法可以做到这一点 PROTOBUF := $(CURDIR)/protobuf SHELL_OUTPUT := $(shell mak

我有一个项目,它构建了几个人工制品,包括共享库、静态库和单元测试可执行文件。该Makefile中的大多数目标使用Google的协议缓冲区,该缓冲区构建在该项目的子模块中


现在,几乎该Makefile的所有目标都需要构建协议缓冲区,但必须为所有目标添加一个先决条件似乎很乏味那么,是否有方法指定在生成任何其他目标之前,Makefile中的目标始终存在?

类似的方法可以做到这一点

PROTOBUF     := $(CURDIR)/protobuf
SHELL_OUTPUT := $(shell make -C $(PROTOBUF) 2>&1)

ifneq ($(filter Stop.,$(SHELL_OUTPUT)),)
    $(error $(SHELL_OUTPUT))
endif


all: a b

a:
    ...
b:
    ...