GNU Make の --no-print-directory オプション: ディレクトリ名の出力を抑制する

2024-04-02

GNU Make の --no-print-directory オプション

--no-print-directory オプションは、make が処理する各ディレクトリの名前を出力することを抑制します。これは、大量のディレクトリを処理する場合、出力を簡潔にするために役立ちます。

オプションの詳細

  • デフォルトの動作:
    • make は、処理する各ディレクトリの名前を出力します。
  • --no-print-directory オプションを指定した場合:
    • make は、ディレクトリの名前を出力しません。
  • その他の関連オプション:
    • -s オプション: すべてのターゲットに関するメッセージを出力しない
    • -w オプション: 暗黙的なルールに関する警告メッセージを出力しない

以下の例では、--no-print-directory オプションを使用して、make が処理するディレクトリの名前を出力しないようにしています。

make --no-print-directory

補足

  • --no-print-directory オプションは、make の動作をわずかに変更するだけです。
  • 大量のディレクトリを処理する場合、このオプションを使用すると、出力を簡潔にすることができます。
  • 他のオプションと組み合わせて使用することで、さらに出力を制御することができます。


GNU Make の --no-print-directory オプションを使用したサンプルコード

以下の例では、src ディレクトリと bin ディレクトリ内のすべてのファイルのビルドを行います。--no-print-directory オプションを使用することで、処理するディレクトリの名前を出力しないようにしています。

# Makefile

all:
	make -C src
	make -C bin

clean:
	make -C src clean
	make -C bin clean

サブディレクトリを再帰的に処理する場合

以下の例では、src ディレクトリとそのサブディレクトリ内のすべてのファイルのビルドを行います。--no-print-directory オプションを使用することで、処理するディレクトリの名前を出力しないようにしています。

# Makefile

all:
	make -C src

clean:
	make -C src clean

特定のディレクトリのみを処理する場合

以下の例では、src/foo ディレクトリ内のすべてのファイルのビルドを行います。--no-print-directory オプションを使用することで、処理するディレクトリの名前を出力しないようにしています。

# Makefile

all:
	make -C src/foo

clean:
	make -C src/foo clean

特定のファイルのみを処理する場合

以下の例では、src/foo.c ファイルのみをビルドします。--no-print-directory オプションを使用することで、処理するディレクトリの名前を出力しないようにしています。

# Makefile

all:
	make -C src foo.c

clean:
	make -C src clean

複数のオプションを組み合わせて使用する場合

以下の例では、-s オプションと --no-print-directory オプションを組み合わせて使用しています。-s オプションは、すべてのターゲットに関するメッセージを出力しないようにします。

# Makefile

all:
	make -s --no-print-directory

clean:
	make -s --no-print-directory clean

環境変数を使用する場合

以下の例では、MAKEFLAGS 環境変数を使用して、--no-print-directory オプションを常に指定するようにしています。

# Makefile

export MAKEFLAGS := --no-print-directory

all:
	# ここにビルドの処理

clean:
	# ここにクリーンアップの処理

補足

  • 上記のサンプルコードは、あくまでも参考です。
  • 実際のコードは、プロジェクトの要件に合わせて変更する必要があります。


GNU Make でディレクトリの名前を出力しないその他の方法

ターゲット名にディレクトリの名前を含めなければ、make はディレクトリの名前を出力しません。

# Makefile

all:
	cd src && make

clean:
	cd src && make clean

.PHONY ターゲットを使用して、ディレクトリの名前を出力しないターゲットを作成することができます。

# Makefile

.PHONY: all clean

all:
	cd src && make

clean:
	cd src && make clean

サイレントルールを使用して、特定のターゲットに関するメッセージを出力しないようにすることができます。

# Makefile

all:
	cd src && make

clean:
	cd src && make clean

silent:
	@

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@
	@-$(silent)

上記の例では、%.o ターゲットはサイレントルールになっています。そのため、make はこのターゲットに関するメッセージを出力しません。

環境変数を使用する

MAKEFLAGS 環境変数を使用して、-s オプションを常に指定するようにすることができます。

# Makefile

export MAKEFLAGS := -s

all:
	# ここにビルドの処理

clean:
	# ここにクリーンアップの処理

補足

  • 上記の方法以外にも、ディレクトリの名前を出力しない方法はいくつかあります。
  • 具体的な方法は、プロジェクトの要件に合わせて選択する必要があります。



"-w" オプションと Makefile の .SILENT ディレクティブ:徹底比較

-w オプションは、GNU Make における重要なコマンドラインオプションの一つです。このオプションは、警告メッセージの表示を制御するために使用されます。機能-w オプションには、以下の 3 つの機能があります。警告メッセージの抑制特定の警告メッセージの抑制



GNU Make で特定の Makefile の一部のみを処理する

"-b" オプションは、コマンドラインで make コマンドを実行する際に指定します。オプションの後に、読み込むファイルの名前を指定します。例:このコマンドは、"Makefile. debug" というファイルを読み込み、その内容を Makefile として処理します。


コマンド出力スッキリ!Makeの「-s」オプションでスマートなビルド環境を実現

このオプションの利点と欠点利点:Makeの出力結果が簡潔になり、必要な情報だけを確認しやすくなります。長時間実行される複雑なMakefileを処理する場合などに、画面が情報で埋もれるのを防ぎます。スクリプト内でMakeを呼び出す場合などに、余計な情報が出力されずに、処理をよりスマートに見せることができます。


【徹底解説】GNU Makeの「-v」オプション:詳細情報表示でデバッグを極める

概要GNU Makeの「-v」オプションは、冗長モードを有効にし、Makeの処理過程における詳細情報を表示します。これは、Makeの動作を理解したり、デバッグしたりする際に役立ちます。表示内容「-v」オプションを指定すると、Makeは以下の情報を表示します。


GNU Make の --quiet オプションでメッセージ出力を抑制

--quiet オプションは、以下の動作を引き起こします。ヘッダーとフッターメッセージの抑制ターゲットの更新に関する情報の抑制レシピの実行に関する情報の抑制エラーメッセージの表示--quiet オプションは、単独で使用したり、他のオプションと組み合わせて使用したりできます。たとえば、-v オプションと組み合わせて使用すると、レシピの実行に関する詳細情報のみを表示できます。



GNU Make の include ディレクティブの詳細

--include-dir=dir オプションは、GNU Make に .mk ファイルの検索パスを追加するために使用されます。このオプションは、include ディレクティブで指定されたファイルが見つからない場合に役立ちます。オプションの詳細:


【徹底解説】GNU Makeの「-v」オプション:詳細情報表示でデバッグを極める

概要GNU Makeの「-v」オプションは、冗長モードを有効にし、Makeの処理過程における詳細情報を表示します。これは、Makeの動作を理解したり、デバッグしたりする際に役立ちます。表示内容「-v」オプションを指定すると、Makeは以下の情報を表示します。


あなたは使いこなせる?GNU Make の "-k" オプションとその他方法

上記のコマンドは、Makefile に記述されたすべてのターゲットを、エラーが発生しても すべて実行しようとします。-k オプションには、以下の 2 つの動作モードがあります。エラーがあっても処理を継続する エラーが発生しても、Make は処理を継続し、残りのターゲットを実行しようとします。 エラーが発生したターゲットは、$? 変数に格納されます。 詳細なエラー情報は、make -r コマンドで確認できます。


GNU Make で特定の Makefile の一部のみを処理する

"-b" オプションは、コマンドラインで make コマンドを実行する際に指定します。オプションの後に、読み込むファイルの名前を指定します。例:このコマンドは、"Makefile. debug" というファイルを読み込み、その内容を Makefile として処理します。


GNU Make の --jobs オプションを使った実際のプロジェクトの例

--jobs[=jobs] オプションは、GNU Make で同時に実行されるジョブ(コマンド)の数を指定します。これは、複数のターゲットを並行してビルドしたり、依存関係のないレシピを同時に実行したりする場合に便利です。構文オプションjobs: ジョブ数の指定。省略すると、デフォルトのジョブ数が使用されます。