"?-6ren"> "?-我想要一个可以调用的makefile: 'make' / 'make ' / 'make clean' / 'make clean' 但我不希望它尝试解决 clean在子目录上调用时! 这是我的m-6ren">
gpt4 book ai didi

makefile - 怎么办 "make "?

转载 作者:行者123 更新时间:2023-11-30 23:46:45 25 4
gpt4 key购买 nike

我想要一个可以调用的makefile:

'make' / 'make <subdir>' / 'make clean' / 'make <subdir> clean'  

但我不希望它尝试解决 clean在子目录上调用时!

这是我的makefile的一个例子:
SUBDIRS := a b c
all :
@echo building a b and c
clean :
@echo cleaning a b and c
$(SUBDIRS) :
make - C $@ $(MAKECMDGOALS)

make <subdir> 外,所有调用都运行良好调用 make -C <subdir> clean 的清洁,但随后尝试解析目标 clean分别地。如何让 make 停止处理以后的目标?

对于这两个答案:
谢谢你的解释。了解什么是该做什么和不该做什么是有帮助的。我不会再尝试这个了。

最佳答案



是的,你可以这样做,但这将是一个丑陋的 hack,并且与 Make 设计的工作方式完全相反。

您传递给 Make 的目标集是一组目标,而不是具有语法的结构化命令。 Make 有望构建它们。如果 makefile 包含目标的配方 foo , 然后 Make 应该构建目标 foo某种方式,不管它是否被调用为 Make fooMake foo barMake bar foo .您尝试做的事情破坏了 Make 的公认行为,因此您应该尝试不同的方法。

如果你仍然想这样做,你可以这样做:

SUBDIRS := a b c

.PHONY: clean
ifneq ($(filter $(SUBDIRS), $(MAKECMDGOALS)),)
$(SUBDIRS) :
@echo make - C $@ $(MAKECMDGOALS)

clean:
@: # do nothing
else
all :
@echo default

clean :
@echo cleaning
endif

关于makefile - 怎么办 "make <subdir> <target>"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6703125/

25 4 0