gpt4 book ai didi

Makefile(不区分大小写的目标)

转载 作者:行者123 更新时间:2023-12-04 22:35:27 25 4
gpt4 key购买 nike

使用 makefile 时,我希望以下内容成为可能:

make clean  
make Clean
make CLean
make CLEan
make CLEAn
make ...

并且必须在我的 makefile 中做同样的事情。
(即。我不想让目标区分大小写)

当然,我可以像这样写每一个可能:
.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

我知道这是一个大惊小怪的愚蠢细节,但肯定有办法吗?

最佳答案

粗暴但有效:

%:
$(MAKE) $(shell echo $@ | tr "[:upper:]" "[:lower:]")

clean:
delete_stuff

关于Makefile(不区分大小写的目标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8017831/

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