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 の "-k" オプションとその他方法

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



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

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


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

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


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

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


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

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



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

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


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

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


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

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


GNU Make の "--dry-run" オプション:ビルド前にコマンドを確認する方法

--dry-run オプションは、GNU Make に実際の処理を実行せずに、ターゲットのビルドに必要なコマンドを表示させるためのオプションです。ビルド前にコマンドを確認したい場合や、トラブルシューティングに役立ちます。使用方法--dry-run オプションは、make コマンドラインで以下のいずれかの方法で指定できます。


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

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