2012-08-14 10 views
11

私のプロジェクトのすべての.cファイルをコンパイルするmakefileがあります。それぞれのファイルについて、コンパイルコマンド全体がシェルに出力され、すべてのオプションとフラグが付きます。これは、1つのファイルの出力例である:GCCとmakefile:エラーと警告のみを表示

アームなし、EABI-GCC -C -mcpu =皮質-M3 -O0 -dM -g -gdwarf-2 -mthumb -fomitフレームポインタ - fverbose-asm -Wa、-ahlms = src/sim/sim_configuration.lst -include ./lib/stm32core/stm32f2xx_conf.h -I。 -I./lib/ARMStandardLibrary -I./lib/LwIP -I./lib/LwIP/src/include -I./lib/LwIP/src/include -I./lib/LwIP/src/include/ipv4 -I./lib/LwIP/src/include/ipv6 -I./lib/FatFS -I./lib/stm32core -I./src -I./src/sim -I./src/sd -I./

問題は、コマンド出力のこの混乱の中でさまざまな警告が失われることです。 にはの警告とエラーが表示されます(ではなく、元のコマンドの)?

答えて

6

the @ symbolというコマンドを追加するだけです。

あなたはbuilt-in implicit rulesに依存している場合は、それらを明示的または、あなたの特定のケースでは、あなたが使用することができます加える必要があります:

.SILENT: *.o 

%.oターゲットに構築するために使用されるすべてのコマンドをサイレンシングするため。それを隠すためのコマンドの前に

+4

の代わりに(または追加の中)を '@'を使用して、あなたが行うことができます'MAKEFLAGS + = --quiet'。これは組込みルールでも機能します。 – Idelic

+0

はい、しかし** **すべての**ルールのすべての**コマンドはエコーされません。 – mrucci

+0

いつものように、それはトレードオフですが、組み込みルールを処理します。一般に、組み込みルールを明示的にすることは非常に悪い考えです。したがって、 'MAKEFLAGS'を設定する方が良い方法です。もちろん、そうではありません。 – Idelic

3

使用@

rule1: 
    @gcc someting 
19

-sオプションでmakeを実行します。 man pageより。あなたはいつもstderr上のすべてのエラーを残すべき、stdoutからのすべての出力をフィルタリングすることができ

-s, --silent, --quiet 
    Silent operation; do not print the commands as they are executed. 
関連する問題