上一节中我们分享了变量的定义与使用,这一节我们来研究一下变量值得替换,具体语法格式如下所示:
执行make,上图的输出结果如下:
在上图中的变量值替换中a是var变量中每个变量的后缀,make解释器去var变量中搜索匹配每一个子变量,遇到后缀为a的子变量即将这个后缀a替换成b,变量值的替换这种语法只能替换变量的后缀。
变量的模式替换,语法格式如下:
模式替换可以替换任意形式的字符串,%作为模式字符串,可以匹配任意长度的字符串,变量var中查找匹配到的a替换为x,查找匹配到的b替换为y,而%模式字符串部分保持不变。
规则中的模式替换,语法如下:
具体示例如下:
在上例中,make解释器从通过%.o在OBJS中匹配子目标,首先找到子目标func.o,这时$(OBJS):%.o部分变成了func.o,make再根据这个子目标生成依赖func.c。进而构成了整个规则,然后make继续搜索OBJS中的其它子目标,直到所有的子目标全部搜索完毕。
在大型工程中,我们不可能去一条一条的写规则,那将繁琐无比,因此,一般通过模式规则这种写法来让make自动生成一条一条的规则,只是这种写法较为晦涩难懂。
变量值的嵌套使用,语法如下:
命令行变量使用,具体如下:
执行make hm:=CMD,输出结果如下:
使用override关键字可以防止makefile中定义的变量被命令行变量覆盖,override用法如下:
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">