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

时间:2017-08-29 08:27:20

标签: makefile

我有一个构建多个人工制品的项目,包括共享库,静态库和单元测试可执行文件。该Makefile中的大多数目标都使用Google的Protocol Buffers,它是在该项目的子模块中构建的。

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

1 个答案:

答案 0 :(得分:1)

以下内容可以解决问题

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:
    ...

How to make a failing $(shell) command interrupt Make