gpt4 book ai didi

linux - 用另一个 makefile 包装 GNU makefile

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:47 27 4
gpt4 key购买 nike

这是以下 question .

我有 Makefile.real(来自上一个 questionMakefile):

all: a b

a:
echo a
exit 1


b:
echo b start
sleep 1
echo b end

现在我想创建 Makefile,它是 Makefile.real 的简单包装:

  • 它用 Makefile.real 调用 make,参数与调用时相同
  • 它应该打印错误消息 id Makefile.real 失败这是我的目标 - 在并行 make 结束时打印错误信息(参见 question)

因此,以下命令应该以错误消息终止:

make -j1 a b (1)
make -j2 a b (2)

我怀疑 Makefile 应该接近于:

%:
$(MAKE) -f Makefile.real $(MAKECMDGOALS); \
res=$$?; if [ $$res != 0 ]; then echo "Failed!!!"; fi; exit $$res

问题是目标 '%' 将针对 ab (2)调用两次。

有什么想法吗?

最佳答案

这是我最后的解决方案

ifneq ($(REAL_MAKE),1)
# run_make will be called once (it's .PHONY target),
# even if make is called with several targets
%: run_make
@:

.PHONY: run_make
run_make:
$(MAKE) $(MAKECMDGOALS) REAL_MAKE=1; \
if [ $$? -ne 0 ]; then \
echo "*** Error ***" >&2; \
exit 1; \
fi

else # REAL_MAKE defined (actual makefile)

### HERE comes original make we want to wrap ###

endif # # REAL_MAKE defined (actual makefile)

关于linux - 用另一个 makefile 包装 GNU makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com