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

2024-04-02

GNU Make の --include-dir=dir オプションの詳細解説

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

オプションの詳細:

  • dir は、検索するディレクトリの名前です。複数のディレクトリを指定したい場合は、カンマで区切ることができます。
  • --include-dir オプションは、コマンドラインで指定するか、Makefile 内で MAKEFLAGS 変数に設定することができます。
  • このオプションは、-I オプションと同等の機能です。

例:

以下の例では、--include-dir オプションを使用して、./include ディレクトリと /usr/local/include ディレクトリ内の .mk ファイルを検索するように Make に指示しています。

make --include-dir=./include --include-dir=/usr/local/include

その他の注意点:

  • --include-dir オプションは、include ディレクティブで指定されたファイルよりも優先されます。
  • このオプションは、-include オプションとは異なり、指定されたディレクトリ内のすべての .mk ファイルが検索されます。
  • 検索対象となるファイルは、*.mk という拡張子を持つファイルだけでなく、Makefile という名前のファイルも含まれます。

補足:

  • 上記の例では、./include ディレクトリと /usr/local/include ディレクトリを指定していますが、これはあくまでも例です。実際の環境に合わせて、適切なディレクトリを指定する必要があります。
  • --include-dir オプションは、include ディレクティブで指定されたファイルが見つからない場合にのみ使用されます。通常は、include ディレクティブで必要なファイルを直接指定することを推奨します。
  • 何かご不明な点があれば、お気軽にご質問ください。
  • より詳細な情報は、GNU Make の公式ドキュメントを参照してください。


GNU Make の --include-dir オプションのサンプルコード

make --include-dir=./include --include-dir=/usr/local/include

この例では、./include ディレクトリと /usr/local/include ディレクトリ内の .mk ファイルを検索します。

MAKEFLAGS 変数を使用して設定する

export MAKEFLAGS="-I ./include -I /usr/local/include"
make

この例では、MAKEFLAGS 変数を使用して、--include-dir オプションを Makefile 内で設定しています。

サブディレクトリ内のファイルを検索する

make --include-dir=./include/subdir

この例では、./include/subdir ディレクトリ内の .mk ファイルを検索します。

相対パスと絶対パスを混在させる

make --include-dir=./include --include-dir=/usr/local/include/subdir

この例では、./include ディレクトリと /usr/local/include/subdir ディレクトリ内の .mk ファイルを検索します。

ワイルドカードを使用する

make --include-dir=./include/*.mk

この例では、./include ディレクトリ内のすべての .mk ファイルを検索します。

.mk ファイル以外のファイルを検索する

make --include-dir=./include --include-dir=/usr/local/include *.inc

この例では、./include ディレクトリと /usr/local/include ディレクトリ内の *.inc ファイルを検索します。

複数のコマンドラインオプションを組み合わせる

make --include-dir=./include --debug=yes

この例では、--include-dir オプションと --debug オプションを組み合わせて使用しています。

Makefile 内で --include-dir オプションを使用する

# Makefile

all:
	@echo "Hello, world!"

include $(MAKEFLAGS)

# ./include ディレクトリ内の *.mk ファイルを検索
include-dir ./include

この例では、Makefile 内で --include-dir オプションを使用して、./include ディレクトリ内の .mk ファイルを検索しています。



GNU Make で include ディレクティブを使用する他の方法

VPATH 変数は、include ディレクティブで指定されたファイルが最初に検索されるディレクトリを指定します。

# Makefile

VPATH = ./include

all:
	@echo "Hello, world!"

# ./include ディレクトリ内の foo.mk ファイルを検索
include foo.mk

vpath ターゲットは、特定のファイルパターンに対して検索パスを設定することができます。

# Makefile

vpath %.mk ./include

all:
	@echo "Hello, world!"

# ./include ディレクトリ内の bar.mk ファイルを検索
include bar.mk

-include オプションは、コマンドラインで特定のファイルを強制的に include します。

make -include ./include/foo.mk

+= 演算子を使用して、VPATH 変数や vpath ターゲットの値に追加することができます。

# Makefile

VPATH += ./include

all:
	@echo "Hello, world!"

# ./include ディレクトリ内の baz.mk ファイルを検索
include baz.mk

環境変数

MAKEINCLUDE 環境変数を使用して、include ディレクティブで指定されたファイルの検索パスを設定することができます。

export MAKEINCLUDE=./include

make
  • 複数のディレクトリを検索したい場合は、VPATH 変数または vpath ターゲットを使用するのが一般的です。
  • 特定のファイルを強制的に include したい場合は、-include オプションを使用します。
  • 複数の Makefile で共通の検索パスを設定したい場合は、環境変数を使用するのが便利です。

X




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

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



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

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


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

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


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

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


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

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



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

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


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

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


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

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


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

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


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

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