2016-04-02 19 views
0

マイ(メイクファイルベース)システム出力に診断のかなりの量を構築し、(好ましくはtput setaftput sgr0を使用して)this questionで説明したように、私は、それらを色付けしたいです。カスタム「エコー」のMakefile

私のシステム内のすべての階層的Makefileからすべての文字列を編集することは圧倒的で非実用的な作業になります(私が将来私の考えを変えれば、再び元に戻すという圧倒的な仕事になるでしょう)。

理想的には、、my_error_echoなどのようなカスタム構文を使用したいと思います。ちょうどechoと同じ構文です。

例えば、構文はmy_warning_echo "some text message"であり、実装は@echo "$$(tput setaf 3)some text message$$(tput sgr0)(これはMakefileの内部から使用されるため、double $$です)という出力になります。

主な問題は、閉じるtput sgr0です(それ以外の場合は、@echo "$$(tput setaf 3)を保持するマクロを使用できます)。

また、1つの引数(テキストメッセージ)を取るシェル関数を書くこともできますが、構文ではメッセージの最初と最後に括弧を追加する必要があります。

標準echoと同じ構文を維持する方法はありますか? GNUのメイクに依存

ソリューションは大丈夫だろう(私は可能な限り標準であることを好むが、私のビルドシステムがすでにGNUの拡張を行い使用するため、...)

+0

質問は不明です。標準的なエコーはもちろん、[POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html)にあります。 –

答えて

1

いるだろうどんなアプローチがあります私は標準的なエコーと同じ構文を保ちますか?

確かに。シェルスクリプトを作成します。例えば、my_error_echoのために、多分何か:

#!/bin/sh 

tput setaf 1 
echo "[email protected]" 
tput sgr0 

はあなた$PATHのどこかにスクリプトを置くAMD、それが実行可能にすることを確認して、あなただけのechoコマンドのようにそれを使用することができます。

+0

シンプルでヘルパースクリプト用のディレクトリがあるので、ビルドシステムにうまく収まります。 – cesss