1

私のメイクファイルでは、「クリーン」ターゲットは、変数.c.bakで置換参照を使用してファイルを削除しています。SRC

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

これにより、 でSRC終わらない var内のすべてが削除され.cます。

変数に対して複数の置換を行うエレガントな方法はありますか? たとえば.cpp.cpp.bak...

4

1 に答える 1

4

.cおよび.cppファイルだけでなく、すべてのソース ファイルのバックアップが表示される場合は、それに応じて置換を変更できます。

rm -f $(SRC:=.bak)

または、GNU Make を使用している場合は、そのテキスト処理関数を使用して$(SRC)、影響を与えるファイルを正確に指定できます。

rm -f $(addsuffix .bak, $(filter %.c %.cpp,$(SRC)))

$(SRC)より古典的なアプローチは、変数の値をどのように構築するかを調べることです。それがファイル名の明示的なリストである場合(IMHOである必要があります)、さまざまな種類のソースファイルの中間変数から構築できます。

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)
于 2012-07-23T09:04:14.920 に答える