make出力をフォーマットするにはどうすればよいですか(!!qmakeプロジェクトファイルを変更するだけです!!)。私のコンパイル行は増え続けており、1行の警告/エラーはそれらの間でほとんど消えています。
私は何かのようなことを考えています
$(CC) in.ext -o out.ext
よろしくお願いします
ではqmake
、サイレント コンフィギュレーション オプションを追加できます。
CONFIG += silent
(注:それがコマンドだと思います。これに似たものです。)
これにより、ほとんどの出力が抑制され、警告とエラーとともに「コンパイル ao」のような行のみが出力されます。make
これはの.SILENT.
ディレクティブに似ていると思います (それだと思います...)
ただし、エラー パーサーが好んで使用する多くの情報が抑制されるため、注意が必要な場合があります。たとえば、SUBDIRS
構成を使用してコンパイルしている場合、別のディレクトリに変更されたときに出力されません。
さまざまなアプローチがあります。そして、それらを構成可能にすることができます。
@
と、コマンド自体は表示されませんが、出力は表示されます。-Werror
するとCFLAGS
(実際に変数がありますよね? それはよくあることです!)、警告を見逃すことはありません。ビルドは最初の警告の後で停止します。/dev/null
、エラー ストリームのみを残すことができます (gcc は通常出力を生成しませんが、他のコマンドには役立つ可能性があるため、これは特定のケースではありません)。残念ながら、qmake
2 番目のアプローチのみが適用されます。プロジェクト ファイルに追加します。
QMAKE_CFLAGS+=-Werror
QMAKE_CXXFLAGS+=-Werror
また、生成されたメイクファイルは、コンパイラを呼び出すときにこれらのフラグを使用するため、警告が発生するたびにビルドが停止します。
(このセクションは、別の質問が表示されるとすぐに別の質問に移動されます)。
通常の make では、すべてを使用できます。すべてを構成可能にすることができます。次に例を示します。
trace?=short
ifeq ($(trace),short)
suppress_echo=@
redirect_to_null=1>/dev/null
else ifeq ($(trace),full)
suppress_echo=
redirect_to_null=
else ifeq ($(trace),werror)
CFLAGS+=-Werror
else
$(error Incorrect trace type "$(trace)"!)
endif
# Thanks to Martin York for the source of this copy-pasted code
out.ext: $(OBJ)
@echo $(CC) $(CFLAGS) -o out.ext $(redirect_to_null)
$(suppress_echo)$(CC) $(CFLAGS) -o out.ext $(OBJ) $(redirect_to_null)
したがって、次のように呼び出す場合make
:
$ make trace=full
すべてを印刷します。呼び出す場合
$ make
値はshort
デフォルトで使用され(?=
通常の代わりに演算子に注意してください=
!)、ルールはそのようなバージョンに展開されます
out.ext: out.o
@echo cc -o out.ext 1>/dev/null
@cc -o out.ext out.o 1>/dev/null
必要な分だけ与えるもの。
構成を伴うこのようなアプローチは、製品コードで使用されます。たとえば、Ubuntu の IcedTea makefile で見ました。
「@」を使用して出力を抑制し、見たいものをエコーすることができます。
簡単な例:
out.ext: $(OBJ)
@echo $(CC) -o out.ext
@$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)