更改命令中的宏定义
在描述文件中定义 shell 命令中的宏时,可以更改 make 命令分配给宏的值。
要更改宏的赋值,请将 :(冒号)放在宏名称后面,然后是替换字符串。 格式如下:
$(macro:string1=string2)其中 string1 是要在宏定义中替换的后缀或单词, string2 是替换后缀或单词。当 make 命令读取宏并开始根据宏定义将值分配给宏时,该命令将替换每个宏string1在宏定义中,值为string2例如,如果描述文件包含宏定义:
FILES=test.o sample.o form.o defs您可以替换form.o带有新文件的文件,input.o,通过在 description-file 命令中使用宏,如下所示:
cc -o $(FILES:form.o=input.o)您可如下将宏中的所有后缀 .o 替换为 .c:
cc -c $(FILES:.o=.c)可使用下面格式的模式匹配替换更改宏值:
$(macro: op%os= np%ns) 其中 op 是现有的(旧的)前缀,os 是现有的(旧的)后缀,np 是新的前缀,ns 是新的后缀。
op、os、np 和 ns 可为零个或者多个字符的字符串。 等号左边的百分号 (%) 所匹配的模式(零个或者多个字符的字符串)与 np 和 ns 一起使用来替换宏值。 百分号 (%) 运算符可在等号 (=) 的右边出现任意多次。
例如:
FOO=abc def
BAR=$(FOO:%=dir1/%.o dir1/%_cltn.o) 将 BAR 的值设置为 dir1/abc.o dir1/abc_cltn.o dir1/def.o dir1/def_cltn.o在维护归档库时,以这种方式更改宏值是很有用的。 有关更多信息,请参阅 ar 命令。