makefile内のForeach、patsubst、その他の関数および自動化変数



Foreach Patsubst Other Functions



参照リンク:
Makefileでforeach関数を使用する方法
$ @、$ ^、$<, $ ?, $%, $ +, $ * in Makefile
MakefileのPatsubst

ワイルドカード、notdir、patsubst、obj = $(dir:%。c =%。o)



例:
テストディレクトリを作成し、テストディレクトリの下にsubという名前のサブディレクトリを作成します

$ mkdir test $ cd test $ mkdir sub

テストでは、a.cファイルとb.c2ファイルを作成し、サブディレクトリの下にsa.cファイルとsb.c2ファイルを作成します。



簡単なMakefileを作成する

src=$(wildcard *.c ./sub/*.c) dir=$(notdir $(src)) obj=$(patsubst %.c,%.o,$(dir) ) all: @echo $(src) @echo $(dir) @echo $(obj) @echo 'end'

結果の分析を実行します。

自動化変数 説明
root @ xxxxx ルール内のターゲットセット、パターンルール内、複数のターゲットがある場合、
「root @ xxxxx」 マッチングパターンで定義されたターゲットセットを表します。
$% ターゲットが関数ライブラリの場合、ルール内のターゲットメンバー名を示します。ターゲットが関数ライブラリファイルでない場合、その値は空です。
$< 依存ファイルのセットの最初のファイル。依存ファイルがパターン(つまり、 '%')で定義されている場合、
'$<” これは、パターンに準拠した一連のファイルコレクションです。
$? ターゲットよりも新しい依存ターゲットコレクションはすべて、スペースで区切られます。
$ ^ 依存ファイルに複数の重複ファイルがある場合、スペースで区切られたすべての依存ファイルのコレクション。
「$ ^」 重複する依存ファイルは削除され、値は保持されます。
$ + '$ ^'に似ていますが、依存関係ファイルに重複がある場合、重複する依存関係ファイルは削除されません。
$ * この変数は、「%」とターゲットパターンの前の部分を表します。ターゲットがa。%の場合。 Cの場合、「$ *」はtest / a.testです。