Makefile变量扩展语法

时间:2018-07-10 22:35:22

标签: linux makefile gnu

请说明该目标如何扩展?

PROJECT=helloworld
TARGET = $(PROJECT:=.so)

例如,我生成了helloworld.so.1.2.3,helloworld.so.1和helloworld.so

1 个答案:

答案 0 :(得分:3)

这将使注释变得混乱,在此示例中,从docs重复了该描述。对于:

PROJECT=helloworld
TARGET = $(PROJECT:=.so)

$(TARGET)的值为helloworld.so。由于单词末尾的空字符串''将被.so替换。这个“单词结尾”与以下内容的区别:

TARGET = $(PROJECT).so

PROJECThelloworld的情况下,结果值看起来相同,但调用make PROJECT="hello world",如果是前者,则最终得到hello.so和{{1 }}在world.so中,对于后者,它将是TARGET。或引用文档:

  

"hello world.so" ...将单词末尾的每个$(var:a=b)’替换为a ...“单词末尾”,我们的意思是b必须被替换,必须在空格后或空格末尾出现