0

私はクラスの C プロジェクトに取り組んでおり、リンクとコンパイルは makefile を介して行われます (神に感謝します!)。

しかし、その後、ターミナルですべての入力ファイル名と出力ファイル名 (argv[] など) を次のように入力する必要があります。

    ./proj c880.isc c880.vec c880.faults c880.out

私の(ばかげた)質問は、次のように入力するだけでメイクファイルを準備できますか?

    ./proj 880

そして、すべてが世話をされますか?? 異なる番号のファイルで何回も実行しなければならないときは嫌いです...

御時間ありがとうございます。

4

2 に答える 2

2

私はあなたが何を求めているのかよく理解していないと思います。しかし、間違いなく次のようなルールを書くことができます:

proj-%: proj
        $< c$*.isc c$*.vec c$*.faults c$*.out

その後、実行make proj-880またはmake proj-900何でも。

于 2013-11-06T05:34:54.017 に答える
2

古典的には、ターゲットを追加しますtest(おそらく.PHONYターゲットとして):

.PHONY: test

test: proj
     ./proj c880.isc c880.vec c880.faults c880.out

c880.isc依存関係などのファイルをリストすることもできます。

パラメータ化することもできます:

TEST = c880
PROG = proj
TEST_ARGS = ${TEST}.isc ${TEST}.vec ${TEST}.faults ${TEST}.out

.PHONY: test

test: ${PROG} ${TEST_ARGS}
    ./${PROG} ${TEST_ARGS}

あるいは、`${TEST}.out を他とは別に扱う必要があるかもしれません。言うのは少し難しいですが、アイデアの要点は立っています。

于 2013-11-06T05:36:18.727 に答える