我有一个构建多个人工制品的项目,包括共享库,静态库和单元测试可执行文件。该Makefile中的大多数目标都使用Google的Protocol Buffers,它是在该项目的子模块中构建的。
现在几乎所有Makefile的目标都需要构建协议缓冲区,但是必须为所有目标添加先决条件似乎很乏味。 那么有没有办法在构建任何其他目标之前指定Makefile中的目标应该始终存在?
答案 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:
...