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:
	# ここにクリーンアップの処理

補足

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



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

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



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

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


GNU Make の --version オプションの詳細解説

コマンドラインから --version オプションを実行すると、次の情報が表示されます。Make ユーティリティのバージョン番号メジャーバージョン番号マイナーバージョン番号パッチレベルリリース候補番号 (存在する場合)ビルドホストビルド日時


include ディレクティブを使用して作業ディレクトリを指定する

以下の例では、-C オプションを使用して、subdir ディレクトリにある Makefile を実行します。このコマンドは、現在のディレクトリではなく、subdir ディレクトリに移動し、そのディレクトリにある Makefile を実行します。


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

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



GNU Make の --version オプションの詳細解説

コマンドラインから --version オプションを実行すると、次の情報が表示されます。Make ユーティリティのバージョン番号メジャーバージョン番号マイナーバージョン番号パッチレベルリリース候補番号 (存在する場合)ビルドホストビルド日時


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

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


include ディレクティブを使用して作業ディレクトリを指定する

以下の例では、-C オプションを使用して、subdir ディレクトリにある Makefile を実行します。このコマンドは、現在のディレクトリではなく、subdir ディレクトリに移動し、そのディレクトリにある Makefile を実行します。


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

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


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

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