在Makefile中转换为小写

时间:2014-04-16 20:52:35

标签: makefile lowercase

在Bash中,转换变量A的内容可以通过${A,,}来实现。在Makefile中,这不再起作用了。以下代码

default:                                                                        
   @for i in a b CCC; do \                                                       
     echo $${i,,}; \                                                             
  done

产生错误

$ make
/bin/sh: 2: Bad substitution
make: *** [default] Error 2

如何将Makefile中的变量转换为小写?

2 个答案:

答案 0 :(得分:3)

make使用的shell是/bin/sh,它是一个符合POSIX标准的shell,而不是bash。如果你想用bash写你的食谱,那就告诉你那是你想要的:

SHELL = /bin/bash

或者,以符合标准的方式编写食谱,例如:

default:
        @for i in a b CCC; do \
           echo $$i | tr A-Z a-z; \
        done

答案 1 :(得分:3)

GNU Make Standard library有一个用纯Make编写的函数(lc)。这可以让你做这样的事情并避免特定于shell的东西:

default:                                                                        
   @$(foreach i,a b CCC,echo $(call lc,$(i));)