syn*_*tel 10 gnu makefile gnu-make
标准:Makefile是一个GNU Make Makefile - 我对makepp,qmake,cmake等不感兴趣.他们都很好(特别是cmake),但这是为了工作和工作,我们使用GNU Make.最佳解决方案是纯Makefile解决方案,而不是解析为您制作的shell脚本.
我也不想做一个"继续失败"的解决方案 - 如果它被破坏了,它就会被打破,需要修复.
情况就是这样,我有一个并行构建多个目录的makefile - 如果其中一个失败,当然整个构建失败,但直到所有运行都运行完成(或失败).这意味着make实际失败的原因被埋没在make的输出结尾任意远的地方.
这是我所拥有的一个例子:
all: $(SUBDIRS)
SUBDIRS = \
apple \
orange \
banana \
pineapple \
lemon \
watermelon \
grapefruit
$(SUBDIRS):
cd $@ && $(MAKE) $(MFLAGS) 2>&1 | sed -e "s/^/$(notdir $(@)): /g"
Run Code Online (Sandbox Code Playgroud)
如果我运行'make -j 5'并且'orange'碰巧失败了 - 我想在make过程结束时看到这样的表
apple - passed
orange - FAILED
banana - passed
pineapple - passed
lemon - passed
Run Code Online (Sandbox Code Playgroud)
我考虑过&& echo"传递"> .result || echo"FAILED"> .result,但仍需要某种TRAP或__onexit()清理命令在退出时打印它们.
任何Makefile ninjas都有一个pure-makefile解决方案吗?
un-edit - 我的解决方案实际上并没有按照我希望的方式工作..简而言之!
我看到的唯一方法是使用子品牌自动执行:
all : subdirs
subdirs :
$(MAKE) -f $(lastword $(MAKEFILE_LIST)) subdirs-recursive || cat log
subdirs-recursive: $(SUBDIRS)
Run Code Online (Sandbox Code Playgroud)