1

私の一部は次のmakefileとおりです。

list1:          all
                for f in \
                `less fetch/list1.txt`; \
                do \
                    ...
                    ./$(BIN) $$f & \
                    ...
                done

list2:          all
                for f in \
                `less fetch/list2.txt`; \
                do \
                    ...
                    ./$(BIN) $$f & \
                    ...
                done

fetch/list1.txtfetch/list2.txtには 2 つのファイルのリスト (パス + ファイル名) が含まれており、make list1make list2はそれぞれ 2 つのリストを調べて、ファイルを再度実行$(BIN)します。これはうまくいきます。

問題は、 と のようにいくつかのファイル リストがlist1ありlist2、make のプロセスが常に同じであることです。、makefileなどを単純化する方法を知っている人はいますか?make listAmake list4

4

3 に答える 3

1

パターン ルールを使用できます。

全て:
    @echo "すべてのレシピ"

list%: すべて
    @echo "このレシピは $@.txt で何かを行います"

出力は次のとおりです。

$ make list1
すべてのレシピ
このレシピは list1.txt で何かを行います
$ make list256
すべてのレシピ
このレシピは list256.txt で何かを行います
$
于 2013-11-09T22:29:04.280 に答える
0

makefile 内でスクリプトを実行することはお勧めしません。多くの場合、恣意的で一貫性のないバグやその他のフラストレーションにつながります。

依存関係のある実行制御には Make を使用しますが (何がいつ実行されるかを決定するなど)、実際のプリミティブ (スクリプトまたはその他のプログラム) を個別に記述し、Make 内から呼び出します。

bar:    foo1 foo2 foo3

# bar is the make target.  Foo1, 2, and 3 are sub-targets needed to make bar.

foo1:
    fooscript1    # Written as an individual script, outside Make.
    fooscript2
于 2013-11-09T23:19:18.320 に答える