使用Makefile时,我希望能够实现以下功能:
“在我的Makefile中,所有人都必须做同样的事情。(即我不希望make目标区分大小写)
当然,我可以将所有可能的情况都写成这样:”
但我认为你可以看出这不是我们想要的。。
我知道'make'有一个内置宏叫做:MAKECMDGOALS,它将等于你在输入make后键入的任何内容。
我试着在我的makefile顶部做这个:
它确实将变量改为全小写,但仍然只会调用输入的目标规则。我甚至尝试过像这样覆盖它:
希望这件事能尽快完成,但是没有成功。
我本打算制定一个像这样的目标:
我知道这是一个不值一提的细节,但肯定有解决方法,对吧?
make clean
make Clean
make CLean
make CLEan
make CLEAn
make ...
“在我的Makefile中,所有人都必须做同样的事情。(即我不希望make目标区分大小写)
当然,我可以将所有可能的情况都写成这样:”
.PHONY clean Clean CLean CLEan CLEAn ...
clean Clean CLean CLEan CLEAn ...:
$(DELETE_STUFF)
但我认为你可以看出这不是我们想要的。。
我知道'make'有一个内置宏叫做:MAKECMDGOALS,它将等于你在输入make后键入的任何内容。
for example, running 'make clean all backup'
$(MAKECMDGOALS) = "clean all backup"
我试着在我的makefile顶部做这个:
MAKECMDGOALS:= $(shell echo $(MAKECMDGOALS) | tr "[:upper:]" "[:lower:]")
它确实将变量改为全小写,但仍然只会调用输入的目标规则。我甚至尝试过像这样覆盖它:
override MAKECMDGOALS:= $(shell echo $(MAKECMDGOALS) | tr "[:upper:]" "[:lower:]")
希望这件事能尽快完成,但是没有成功。
我本打算制定一个像这样的目标:
$(MAKECMDGOALS):
MAKECMDGOALS:= $(shell echo $(MAKECMDGOALS) | tr "[:upper:]" "[:lower:]")
#BUT I CAN'T CALL OTHER TARGETS FROM THE SHELL
我知道这是一个不值一提的细节,但肯定有解决方法,对吧?