递归make的第一个错误退出

时间:2018-08-23 18:43:38

标签: makefile compilation

Submake是通过include语句而不是像其他SO答案那样的for循环引入的。

  root makefile
  1 all: build
  2
  3 GIT_ROOT ?= $(shell git rev-parse --show-toplevel)
  4
  8
  9 # These get piggybacked onto by the sub-Makefiles
 10 BUILD_DEPS =
 11 CLEAN_DEPS =
 12 PACKAGE_DEPS =
 13 TEST_DEPS =
 14
 15 define validate_in_path
 16 @which $(1) >/dev/null || (echo "Expected to find '$(1)' in PATH" && exit 1)
 17 endef
 18
 19 include $(GIT_ROOT)/*/Makefile.sub
 20
 21 .PHONY: all build clean package
 22
 23 build: $(BUILD_DEPS)

大多数子make看起来像这样,它们所做的只是在上游调用一个函数,并为该函数使用的路径传递参数。

我应该怎么做才能使整个制造过程结束,也就是说,如果该子制造中的第5行失败,那么其他所有递归启动的制造也将结束。

我真正不想做的是将shell逻辑放在这里,以便在某些内容以非零代码退出时执行PID终止顶层进程。

  sub makefile
  1 $(eval $(call declare_node_service,autoscaler))
  2 .PHONY += autoscaler clean-autoscaler package-autoscaler
  3
  4 autoscaler: node-lib
  5         $(call build_node,autoscaler)
  6
  7 clean-autoscaler:
  8         $(call clean_node,autoscaler)
  9
 10 package-autoscaler: autoscaler
 11         $(call package_node,autoscaler)
 12
 13 test-autoscaler: autoscaler
 14         $(call test_node,autoscaler)

0 个答案:

没有答案