在我的 makefile 中,“干净”目标是通过在变量.c.bak
中使用替换引用来删除文件:SRC
rm -f $(SRC:.c=.c.bak)
这会导致它删除SRC
var 中不以.c
.
是否有一种优雅的方法可以对变量进行多次替换?例如,我还想尝试.cpp
用.cpp.bak
...替换
在我的 makefile 中,“干净”目标是通过在变量.c.bak
中使用替换引用来删除文件:SRC
rm -f $(SRC:.c=.c.bak)
这会导致它删除SRC
var 中不以.c
.
是否有一种优雅的方法可以对变量进行多次替换?例如,我还想尝试.cpp
用.cpp.bak
...替换
如果可能会出现所有源文件的备份,而不仅仅是.c和.cpp文件,您可以相应地更改替换:
rm -f $(SRC:=.bak)
或者,如果您使用的是 GNU Make,您可以使用它的文本处理功能来准确地拼出$(SRC)
您想要影响的文件:
rm -f $(addsuffix .bak, $(filter %.c %.cpp,$(SRC)))
更经典的方法是查看如何构造$(SRC)
变量的值。如果它是一个明确的文件名列表(恕我直言,它应该是),那么您可以从不同类型的源文件的中间变量构建它:
SRC_C = foo.c bar.c
SRC_CXX = baz.cpp apple.cpp
SRC = Makefile banana.pl carrot.pl $(SRC_C) $(SRC_CXX)
现在您可以正确且可移植地编写您的原始替换(即,不需要 GNU Make 工具):
rm -f $(SRC_C:.c=.c.bak) $(SRC_CXX:.cpp=.cpp.bak)