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です。 |