2012-07-23 44 views
1

在我的makefile中,「乾淨」的目標是通過使用SRC變量替換引用刪除.c.bak文件:化妝:一個變量不止一次替代引用?

rm -f $(SRC:.c=.c.bak) 

這將導致它刪除SRC VAR不會在.c結束一切。

有一種優雅的方式做一個變量多於一個替代?我想,例如,喜歡也試圖替代.cpp.cpp.bak ...

回答

4

如果可能會出現所有的源文件,而不僅僅是.C的.cpp文件的備份,你可以改變替代相應:

rm -f $(SRC:=.bak) 

或者,如果您使用的GNU製作,你可以使用它的文字處理功能正是你想要影響到其在$(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)