2012-04-01 15 views
61

私はその出力をstdoutに出力するはずの割り当てのためのプログラムを書きました。割り当て仕様は、make run > outputFileとして呼び出されたときに、プログラムを実行し、その仕様に示されているものと同一のSHA1フィンガープリントを持つファイルに出力を書き込むMakefileを作成する必要があります。makefileのコマンド呼び出しのエコーを抑制しますか?

... 
run: 
    java myprogram 

はまた私のファイルが間違っていると、指紋を引き起こし、この余分な行を含むように、出力ファイルに私のプログラム(例えばJavaのMYPROGRAMを)実行するコマンドを出力します。

私の問題は私のメイクファイルがあることです。

コマンドラインにエコーコマンド呼び出しなしでコマンドを実行する方法はありますか?

答えて

110

は、実行中の命令を印刷しないようにgmakeを伝えるために、コマンドの先頭に@を追加します。このように:

run: 
    @java myprogram 

Oliが示唆しているように、これはBashではなくMakeの機能です。一方

、バッシュは、明示的に(すなわち-xオプション付き)そうするように指示しない限り、実行中のコマンドをエコーすることはありません。

+3

+1。しかし、OPの混乱を解消するために、これはBashのものではなく、Makeの機能であることを明確にする価値があります。 –

+0

@OliCharlesworth:理にかなっています。ありがとう。 –

+0

すべてのエコーを無効にする方法はありますか?セクションのためにそれをオフにして、後で戻ってもいいですか? – Benubird

0

@でコマンドを先行の効果は、ライン上の末尾の円記号を使用してコマンドを拡張することによって、「セクション」に拡張することができます。偽のコマンド が出力を抑止したい場合は、セクションを @printfで始めることができます。 "" \

+1

あなたはコードで私たちの例を与えることができる – Dennis

25

さらに簡単です:make -s(サイレントモード)!

+0

Upvoteを:??これは本当にここに受け入れ答えなければなりません '@は'作るコマンドを使用してMakefileを散水。 – tripleee

+4

私はこれが道のりであることに同意しますが、元の問題の説明では、私はmakeを呼び出す者ではないことに気づきます - 私のインストラクターはそうです。渡されたフラグを制御することはできません。私はmakefileの中から出力を制御する必要がありました。 – noobler

関連する問題