21

私は Makefile を書いていますが、ワイルドカードを含む一般的なルールを使用したいと考えています。

%: bkp/%
    cp $< $@

しかし、このルールをいくつかの特定のファイルに対してのみ有効にしたかったのです。たとえば、リストで変数を定義したかった

file_list = foo.c bar.c zzz.c

この変数にリストされているファイルに対してのみ有効になるようにルールを構成します。それ、どうやったら出来るの?

4

2 に答える 2

29

静的パターン ルールが必要です。

file_list = foo.c bar.c zzz.c

$(file_list): %: bkp/%
        cp $< $@

構文は、使用していた暗黙のパターン ルールに非常に似ています。はい、一般的にはより安全です (より予測可能です)。

于 2010-10-07T03:24:26.897 に答える
5

もちろん、5分後に自分で答えを見つけました... :)

必要なのは、静的パターン ルールです。

http://www.gnu.org/software/make/manual/make.html#Static-Pattern

したがって、例は次のように解決されます

$(file_list) : % : bkp/%
    cp $< $@
于 2010-10-07T03:25:21.627 に答える