この付録では、GNUのmakeが理解するディレクティブ、テキスト処理関数、特別な変数を一覧にまとめます。
ほかの一覧については、組み込みの特別なターゲット名、組み込みルールのカタログ、オプションのまとめの各項をご覧ください。
まずは、GNUのmakeが認識するディレクティブの一覧です:
define variabledefine variable =define variable :=define variable ::=define variable :::=define variable +=define variable ?=endef複数行にわたる変数を定義します。
複数行変数の定義の項を参照してください。
undefine variable変数の定義を取り消します。
変数の定義の取り消しの項を参照してください。
ifdef variableifndef variableifeq (a,b)ifeq "a" "b"ifeq 'a' 'b'ifneq (a,b)ifneq "a" "b"ifneq 'a' 'b'elseendifmakefileの一部を条件に応じて評価します。
Makefileの条件分岐の項を参照してください。
include file-include filesinclude file別のmakefileを読み込みます。
ほかのMakefileの読み込みの項を参照してください。
override variable-assignment変数を定義します。それまでの定義は、たとえコマンドラインで指定されたものであっても上書きされます。
overrideディレクティブの項を参照してください。
exportmakeに対して、デフォルトですべての変数を子プロセスへエクスポートするよう指示します。
サブmakeへの変数の伝達の項を参照してください。
export variableexport variable-assignmentunexport variable特定の変数を子プロセスへエクスポートするかどうかをmakeに指示します。
サブmakeへの変数の伝達の項を参照してください。
private variable-assignmentこの変数代入を前提条件に継承させないようにします。
継承の抑制の項を参照してください。
vpath pattern path‘%’パターンに一致するファイルの探索パスを指定します。
vpathディレクティブの項を参照してください。
vpath patternpatternに対してそれまでに指定された探索パスをすべて削除します。
vpathいずれかのvpathディレクティブでそれまでに指定された探索パスをすべて削除します。
次に、組み込み関数の一覧です(テキストを変換する関数を参照してください):
$(subst from,to,text)textの中のfromをtoに置き換えます。
文字列の置換と解析を行う関数の項を参照してください。
$(patsubst pattern,replacement,text)textの中でpatternに一致する語をreplacementに置き換えます。
文字列の置換と解析を行う関数の項を参照してください。
$(strip string)stringから余分な空白文字を取り除きます。
文字列の置換と解析を行う関数の項を参照してください。
$(findstring find,text)textの中からfindを探します。
文字列の置換と解析を行う関数の項を参照してください。
$(filter pattern…,text)textの中から、いずれかのpattern語に一致する語を選び出します。
文字列の置換と解析を行う関数の項を参照してください。
$(filter-out pattern…,text)textの中から、どのpattern語にも一致しない語を選び出します。
文字列の置換と解析を行う関数の項を参照してください。
$(sort list)listの語を辞書順にソートし、重複を取り除きます。
文字列の置換と解析を行う関数の項を参照してください。
$(word n,text)textのn番目(1始まり)の語を取り出します。
文字列の置換と解析を行う関数の項を参照してください。
$(words text)textに含まれる語の数を数えます。
文字列の置換と解析を行う関数の項を参照してください。
$(wordlist s,e,text)textの中のs番目からe番目までの語のリストを返します。
文字列の置換と解析を行う関数の項を参照してください。
$(firstword names…)namesの最初の語を取り出します。
文字列の置換と解析を行う関数の項を参照してください。
$(lastword names…)namesの最後の語を取り出します。
文字列の置換と解析を行う関数の項を参照してください。
$(dir names…)各ファイル名のディレクトリ部分を取り出します。
ファイル名を扱う関数の項を参照してください。
$(notdir names…)各ファイル名のディレクトリ以外の部分を取り出します。
ファイル名を扱う関数の項を参照してください。
$(suffix names…)各ファイル名のサフィックス(最後の‘.’とそれに続く文字)を取り出します。
ファイル名を扱う関数の項を参照してください。
$(basename names…)各ファイル名のベース名(サフィックスを除いた名前)を取り出します。
ファイル名を扱う関数の項を参照してください。
$(addsuffix suffix,names…)namesの各語の末尾にsuffixを付け加えます。
ファイル名を扱う関数の項を参照してください。
$(addprefix prefix,names…)namesの各語の先頭にprefixを付け加えます。
ファイル名を扱う関数の項を参照してください。
$(join list1,list2)2つの並列したリストの語どうしを連結します。
ファイル名を扱う関数の項を参照してください。
$(wildcard pattern…)シェルのファイル名パターン(‘%’パターンではありません)に一致するファイル名を探します。
wildcard関数の項を参照してください。
$(realpath names…)namesの各ファイル名について、.や..やシンボリックリンクを一切含まない絶対名へ展開します。
ファイル名を扱う関数の項を参照してください。
$(abspath names…)namesの各ファイル名について、.や..という構成要素を含まない絶対名へ展開します。ただしシンボリックリンクは保持されます。
ファイル名を扱う関数の項を参照してください。
$(error text…)この関数が評価されると、makeはメッセージtextを表示して致命的なエラーを発生させます。
Makeを制御する関数の項を参照してください。
$(warning text…)この関数が評価されると、makeはメッセージtextを表示して警告を発生させます。
Makeを制御する関数の項を参照してください。
$(shell command)シェルコマンドを実行し、その出力を返します。
shell関数の項を参照してください。
$(origin variable)make変数variableがどのように定義されたかを表す文字列を返します。
origin関数の項を参照してください。
$(flavor variable)make変数variableの種別(flavor)を表す文字列を返します。
flavor関数の項を参照してください。
$(let var [var ...],words,text)var群をwordsの各語に束縛したうえでtextを評価します。
let関数の項を参照してください。
$(foreach var,words,text)varをwordsの各語に束縛しながらtextを評価し、その結果を連結します。
foreach関数の項を参照してください。
$(if condition,then-part[,else-part])条件conditionを評価します。空でなければthen-partの展開結果に置き換え、そうでなければelse-partの展開結果に置き換えます。
条件分岐のための関数の項を参照してください。
$(or condition1[,condition2[,condition3…]])各条件conditionNを1つずつ評価し、最初に空でなかった展開結果に置き換えます。すべての展開結果が空の場合は、空文字列に置き換えます。
条件分岐のための関数の項を参照してください。
$(and condition1[,condition2[,condition3…]])各条件conditionNを1つずつ評価します。どれか1つでも展開結果が空文字列になれば、空文字列に置き換えます。すべての展開結果が空でない文字列になった場合は、最後のconditionの展開結果に置き換えます。
条件分岐のための関数の項を参照してください。
$(intcmp lhs,rhs[,lt-part[,eq-part[,gt-part]]])lhsとrhsを数値として比較します。左辺が右辺より小さいか、等しいか、大きいかに応じて、それぞれlt-part、eq-part、gt-partの展開結果に置き換えます。
条件分岐のための関数の項を参照してください。
$(call var,param,…)変数varを評価します。その際、$(1)、$(2)といった参照を、1番目、2番目…のparamの値で置き換えます。
call関数の項を参照してください。
$(eval text)textを評価したうえで、その結果をmakefileのコマンドとして読み込みます。展開結果は空文字列になります。
eval関数の項を参照してください。
$(file op filename,text)引数を展開したうえで、モードopでファイルfilenameを開き、textをそのファイルに書き込みます。
file関数の項を参照してください。
$(value var)変数varの中身を、展開を一切行わずにそのまま評価結果とします。
value関数の項を参照してください。
次に、自動変数の一覧です。 詳しくは自動変数の項をご覧ください。
$@ターゲットのファイル名です。
$%ターゲットがアーカイブのメンバである場合の、そのメンバ名です。
$<最初の前提条件の名前です。
$?ターゲットより新しいすべての前提条件の名前を、間に空白を挟んで並べたものです。
アーカイブのメンバである前提条件については、指定されたメンバだけが使われます(makeでアーカイブファイルを更新するを参照してください)。
$^$+すべての前提条件の名前を、間に空白を挟んで並べたものです。アーカイブのメンバである前提条件については、指定されたメンバだけが使われます(makeでアーカイブファイルを更新するを参照してください)。$^の値は重複する前提条件を取り除きますが、$+は重複を残し、その順序も保ちます。
$*暗黙のルールが一致した際の語幹(stem)です(パターンの一致のしかたを参照してください)。
$(@D)$(@F)$@のディレクトリ部分、およびディレクトリ内のファイル部分です。
$(*D)$(*F)$*のディレクトリ部分、およびディレクトリ内のファイル部分です。
$(%D)$(%F)$%のディレクトリ部分、およびディレクトリ内のファイル部分です。
$(<D)$(<F)$<のディレクトリ部分、およびディレクトリ内のファイル部分です。
$(^D)$(^F)$^のディレクトリ部分、およびディレクトリ内のファイル部分です。
$(+D)$(+F)$+のディレクトリ部分、およびディレクトリ内のファイル部分です。
$(?D)$(?F)$?のディレクトリ部分、およびディレクトリ内のファイル部分です。
次の変数は、GNUのmakeによって特別に使われます:
MAKEFILESmakeを起動するたびに毎回読み込まれるmakefileです。
変数MAKEFILESの項を参照してください。
VPATHカレントディレクトリで見つからないファイルを探すためのディレクトリ探索パスです。
すべての前提条件に対するVPATH探索パスの項を参照してください。
SHELLシステムのデフォルトのコマンドインタプリタの名前です。通常は/bin/shです。
makefile内でSHELLを設定すれば、レシピの実行に使われるシェルを変更できます。レシピの実行を参照してください。SHELL変数は、環境からの取り込みや環境へのエクスポートの際に特別に扱われます。シェルの選択を参照してください。
MAKESHELLMS-DOSでのみ使われる、makeが用いるコマンドインタプリタの名前です。この値はSHELLの値より優先されます。MAKESHELL変数を参照してください。
MAKEmakeが起動された際の名前です。この変数をレシピの中で使うと特別な意味を持ちます。MAKE変数のはたらきを参照してください。
MAKE_VERSION組み込み変数‘MAKE_VERSION’は、GNUのmakeプログラムのバージョン番号に展開されます。
MAKE_HOST組み込み変数‘MAKE_HOST’は、GNUのmakeが動作するようにビルドされたホストを表す文字列に展開されます。
MAKELEVEL再帰(サブmake)の階層の深さです。
サブmakeへの変数の伝達の項を参照してください。
MAKEFLAGSmakeに与えられたフラグです。フラグを設定するために、これを環境やmakefileで設定できます。
サブmakeへのオプションの伝達の項を参照してください。
レシピの行でMAKEFLAGSを直接使うことは、決して適切ではありません。その内容は、シェルで使うために正しくクォートされているとは限らないからです。これらの値は、必ず再帰的なmakeが親から環境を通して取得できるようにしてください。
GNUMAKEFLAGSmakeが解析するそのほかのフラグです。makeのコマンドラインフラグを設定するために、これを環境やmakefileで設定できます。GNUのmakeはこの変数を自分自身で設定することはありません。この変数が必要になるのは、POSIX準拠のmakefileの中でGNUのmake固有のフラグを設定したい場合だけです。この変数はGNUのmakeには認識され、ほかのmake実装では無視されます。GNUのmakeしか使わないのであれば必要なく、その場合はMAKEFLAGSを直接使えばかまいません。
サブmakeへのオプションの伝達の項を参照してください。
MAKECMDGOALSコマンドラインでmakeに与えられたターゲットです。この変数を設定しても、makeの動作には何も影響しません。
ゴールを指定する引数の項を参照してください。
CURDIR(もしあれば、すべての-Cオプションが処理されたあとの)カレントワーキングディレクトリの絶対パス名が設定されます。この変数を設定しても、makeの動作には何も影響しません。
makeの再帰的な使い方の項を参照してください。
SUFFIXESmakeがどのmakefileも読み込む前の、デフォルトのサフィックスの一覧です。
.LIBPATTERNSmakeが探索するライブラリの命名規則と、その探索順序を定義します。
リンクライブラリのディレクトリ探索の項を参照してください。