Makefile 没有提供大小写转换函数,一般用 shell 命令实现,这又带来操作系统的兼容性问题,于是利用自定义函数解决这个问题:
define up
$(subst z,Z,$(subst y,Y,$(subst x,X,$(subst w,W,$(subst v,V,$(subst u,U,$(subst t,T,$(subst s,S,$(subst r,R,$(subst q,Q,$(subst p,P,$(subst o,O,$(subst n,N,$(subst m,M,$(subst l,L,$(subst k,K,$(subst j,J,$(subst i,I,$(subst h,H,$(subst g,G,$(subst f,F,$(subst e,E,$(subst d,D,$(subst c,C,$(subst b,B,$(subst a,A,$(1)))))))))))))))))))))))))))
endef
v :=abcdefghijklmnopqrstuvwxyz
$(info v=$(v))
v:=$(call up,$(v))
$(info v=$(v))
输出:
v=abcdefghijklmnopqrstuvwxyz
v=ABCDEFGHIJKLMNOPQRSTUVWXYZ
make: *** No targets. Stop.
如果需要转小写把 up 函数中的大小写对调即可。