総合手引 | セクション 1 | English | オプション |
本マニュアルはリファレンスのためのみのドキュメントです。 make と makefile に関する詳しい紹介は Make - A Tutorial を参照してください。
オプションは以下のとおりです。
| |
シーケンス中の依存行のソースを作成するために、各コマンドに対して
1 つのシェルを実行する、バックワード互換モードで実行しようとします。
このオプションは
| |
| |
makefile の読み取りや他のなにかをする前に、
directory
へ移動します。
複数の
| |
| |
大域変数 variable を 1 と定義します。 | |
| |
デバッグモードを有効にし、 make が表示するデバッグ情報の種類を指定します。 引数 flags には、以下のうち 1 つ以上を指定できます。 | |
A | すべてのデバッグ情報を出力します。 他のフラグをすべて指定したことと等価です。 |
a | アーカイブ検索とキャッシュに関する情報を表示します。 |
c | 条件評価に関する情報を表示します。 |
d | ディレクトリ検索とキャッシュに関する情報を表示します。 |
f | for ループの実行に関するデバッグ情報を表示します。 |
g1 | 処理を行う前に、入力のグラフを表示します。 |
g2 | すべての処理を行ったあと、あるいはエラーにより終了する前に入力のグラフを 表示します。 |
j | 複数のシェルを起動する場合の情報を表示します。 |
l | @ がコマンドに前置されていようといまいと、 また他の「静寂」フラグの有無に関わらず、Makefile のコマンドを表示します。 これは「やかましい」動作としても知られています。 |
m | ターゲットの作成と変更日付に関する情報を表示します。 |
s | 拡張子解釈に関する情報を表示します。 |
t | ターゲットリストのメンテナンスに関する情報を表示します。 |
v | 変数の値に関する情報を表示します。 |
| |
(存在すれば) 環境の値で上書きする、makefile の中の変数を指定します。 | |
| |
環境の値で makefile 中のすべての変数の値を上書きするように指示します。 | |
| |
デフォルトの makefile と Makefile のかわりに、読み込むファイルを指定します。 もし makefile が '-' なら標準入力から読み込みます。 複数のファイルが指定可能で、指定した順に読み込まれます。 | |
| |
makefile と、インクルードされる makefile を検索するためのディレクトリを
指定します。
システムで定義してある makefile のあるディレクトリ (または、
複数のディレクトリ;
| |
| |
makefile から実行されたシェルコマンドが 0 でない終了ステータスを 返しても無視します。 makefile 中でコマンドの先頭に ' -' を指定するのと同じです。 | |
| |
make が同時に起動できるジョブの数を指定します。 B フラグを指定しなければ、互換性モードはオフになります。 | |
| |
エラーが発生しても処理を続行します。 ただし、発生したエラーによって作成が不能になったターゲットに 依存したターゲットに関しては処理が中断されます。 | |
| |
<...> 形式で読み込まれる
sys.mk
や makefile を検索するための
ディレクトリを指定します。
複数のディレクトリを検索パスに加えることができます。
このパスは、デフォルトのシステムインクルードパス
/usr/share/mk
を上書きします。
さらに、システムインクルードパスを "..." 形式のインクルードによって
追加することができます(
| |
| |
make が実行するであろうコマンド内容の表示のみを行い、実行はしません。 | |
| |
並行して動作するジョブを一緒に混ぜて出力するのでなく、
与えられたジョブの順番をそろえて、ジョブが終了するまで表示しません。
このオプションは
| |
| |
いっさいのコマンドを実行せず、指定されたターゲットが最新のものであれば 0 を、そうでなければ 1 を終了ステータスとして返します。 | |
| |
システムの makefile で定義された組み込みのルールを使用しません。 | |
| |
エラーが起きた時に処理を中止します。
デフォルトの動作です。
このオプションは再帰的な構築の際に
| |
| |
実行するコマンドを表示しません。 makefile のなかで、コマンドの先頭に ' @' を指定するのと同じです。 | |
| |
makefile で指定されたターゲットを作り直すのではなく、ターゲットを作成 するか、あるいは最終更新日付を現在の時刻に設定することにより、 ターゲットが最新であるかのようにします。 | |
| |
グローバルな文脈での make の variable の値を表示します。如何なるターゲットも生成しません。 このオプションで複数のインスタンスを指定することができます。 変数は、各行ごとに表示されます。 未定義もしくは空の変数は、空行で 表現されます。 | |
| |
特に冗長表示させます。 複数ジョブの make においては、ファイルバナーを生成させます。 | |
| |
| |
variable=value | |
変数 variable の値を value に設定します。 | |
makefile には 7 種類の行があります: 依存関係記述、シェルコマンド、変数 代入、インクルード文、条件命令、for ループ、コメントです。
一般に、行は行末にバックスラッシュ (‘\’) を置くことにより次行へ継続させることができます。 この場合、バックスラッシュ直後の改行と、次の行の先頭の 空白部分は 1 つの空白に置き換えられます。
amp;: | ターゲットの最終更新日付が、いずれかのソースの最終更新日付よりも 古いものであれば、ターゲットは古いものであり、作り直されるべきものと 判断されます。 別の行でこのオペレータによる同じターゲットに関するソースの記述があれば、 それらはすべて 1 つにまとめられます。 ターゲットの作成中に make が中断されると、ターゲットは削除されます。 |
amp;! | ターゲットはつねに作り直されます。 ただし、作り直されるのは、 すべてのソースが検査され、必要と判断されたソースが作り直されたあとです。 このオペレータによる同じターゲットに関するソースの記述が別の行にもあれば、 それらはすべて 1 つにまとめられます。 ターゲットの作成中に make が中断されると、ターゲットは削除されます。 |
amp;:: | ソースが指定されていなかった場合、つねにターゲットは作り直されます。 指定されていた場合にはソースのいずれかがターゲットよりも新しい時だけ ターゲットは作り直されます。 本オペレータでは、別の行において同じ ターゲットに関するソースの記述があっても 1 つにまとめません。 ターゲットの作成中に make が中断されても、ターゲットは削除されません。 |
ターゲットとソースは、シェルのワイルドカード表記として ‘amp;?’, ‘*’, ‘[]’, ‘{}’ を含むことができます。 ‘amp;?’, ‘*’, ‘[]’ の表記は、ターゲットまたはソースの最後の要素として記述でき、 存在するファイルを指定するものでなければなりません。 表記 ‘{}’ はファイルが存在しなくてもかまいません。 シェルのように辞書順に並べられて 展開されることはなく、ファイルシステム上に並んでいる順番のまま行われます。
コマンドラインの先頭の文字が
' @',
' -',
' +'
のいずれか
ならば、コマンドは特別な扱いを受けます。
' @'
は、コマンド実行前のコマンド内容表示を抑制します。
' -'
は、コマンドの 0 ではない終了ステータスを無視するように指示します。
' +'
は、たとえ
amp;= | 変数に値を代入します。その時点までの値は失われます。 |
amp;+= | 現在の変数の値に、右辺の値を追加します。 |
amp;?= | 変数が未定義の場合のみ、値を代入します |
amp;:= | 右辺を展開した値を代入します。つまり、変数に代入する前に値の展開を行います。 通常、値の展開は代入時には行われず、変数が参照されるときに行われます。 |
amp;!= | 右辺を展開した値をシェルに実行させ、実行結果を左辺の変数に代入します。 結果のなかに含まれる改行は空白に置き換えられます。 |
いずれの場合も、値の前にある空白は無視されます。 値が追加される場合、 変数の直前の値と追加する値との間に空白が挿入されます。
変数は、ドル記号 (‘amp;$’) に続いて中括弧 (‘{}’) または小括弧 (‘()’) で囲まれた変数名を置くことにより展開されます。 もし変数名が 1 文字なら、変数名を囲む括弧は省略できますが、 このような省略形は推奨できません。
変数置換は、変数が用いられている場所により、 2 つの別々のタイミングで 行われます。 依存関係記述行で用いられた変数は、その行が読み込まれたときに 展開されます。 シェルコマンド内で用いられた変数は、シェルコマンド実行時に 展開されます。
変数には、優先度に従って、4 つの異なるクラスがあります:
環境変数 | make の環境中で有効な変数 |
グローバル変数 | |
makefile とインクルードされた makefile 内で有効な変数。 | |
コマンドライン変数 | |
コマンドラインの中で指定された変数、および、 MAKEFLAGS 環境変数または .MAKEFLAGS ターゲットから取得した変数。 | |
ローカル変数 | |
あるターゲットのみに対して定義される変数。 ローカル変数には、以下の 7 種類があります: | |
.ALLSRC | |
このターゲットに対するすべてのソースのリスト。 ' amp;>' も同じです。 | |
.ARCHIVE | |
アーカイブファイル名。 ' amp;!' も同じです。 | |
.IMPSRC | |
ターゲット名に変換するのに使用するソースのファイル名またはパス名 ( "暗黙の" ソース)。 ' amp;<' も同じです。 | |
.MEMBER | |
アーカイブのメンバ。 ' amp;%' も同じです。 | |
.OODATE | |
ターゲットよりも新しいソースのリスト。 ' amp;?' も同じです。 | |
.PREFIX | |
ターゲットのディレクトリ名と拡張子を取り除いた名前。 ' *' も同じです。 | |
.TARGET | |
ターゲットの名前。 ' @' も同じです。 | |
短い形式 ' @', ' amp;!', ' amp;<', ' amp;%', ' amp;?', ' amp;>', ' *' は互換性のためのものですが、利用することは推奨できません。 また、 ' @F', ' @D', ' <F', ' <D', ' *F', ' *D' は AT&T V の makefile との互換性のために存在していますが、利用することは 推奨できません。
次の 4 つのローカル変数は依存関係記述行のソースに使うことができます。 これらは、その行のターゲット毎の値に展開されます。 これらのローカル変数は .TARGET, .PREFIX, .ARCHIVE, .MEMBER です。
さらに、 make では以下の内部変数または環境変数を利用することができます。
amp;$ | |
単一のドル記号 ‘amp;$’ 。 すなわち、 ‘amp;$$’ は単一のドル記号に置換されます。 | |
MAKE | |
make の起動に使用された名前 ( argv[0]) 。 | |
.CURDIR | |
make が実行されたディレクトリ。 make ユーティリティは .CURDIR を、 getcwd(3) から渡される公式なパスに設定します。 | |
.OBJDIR | |
ターゲットを作成するディレクトリへのパス。
起動時に、
make
はターゲットファイルを置く代わりのディレクトリを検索します。
make
はこの特別なディレクトリに移動することを試み、
makefile がカレントディレクトリになかった場合にはこのディレクトリで
検索されます。
以下の順番でディレクトリは試されます:
最初に make が移動に成功したディレクトリが使われます。 もし MAKEOBJDIRPREFIX または MAKEOBJDIR のどちらかが環境で設定されていて make が対応するディレクトリに移動できなかった場合は、 リストの残りをチェックすることなしにカレントディレクトリが使われます。 それらが定義されておらず make が残った 3 つのディレクトリのいずれにも移動できなかった場合、 カレントディレクトリが使われます。 MAKEOBJDIRPREFIX と MAKEOBJDIR とは環境変数でなければならず、 make のコマンドラインで設定してはいけません。 make ユーティリティは、 getcwd(3) で与えられる正規化されたパスを .OBJDIR へ設定します。 | |
.MAKEFILE_LIST | |
デフォルトファイルや、コマンドラインや、 .include ディレクティブから得られた makefile も含め、 make がさまざまな makefile を読み込むときに、 .MAKEFILE_LIST 変数にそれらの名前が自動的に追加されます。 現在の makefile の名前がこの変数の末尾の単語となるようにするため、 これらは、 make がパーズ開始する前に右側に追加されます。 | |
.MAKEFLAGS | |
環境変数 MAKEFLAGS は、 make のコマンドラインにて指定されるあらゆるものを含みます。 その中身は .MAKEFLAGS 変数に記憶されます。 make のコマンドラインで指定されたオプションと変数代入のすべてが .MAKEFLAGS 変数に追加され、 make が実行する全プログラムの環境にこの変数が MAKEFLAGS として組み込まれます。 | |
MFLAGS | |
下位互換性のために提供されます。 この変数は、 MAKEFLAGS 環境変数から得たオプションすべてに加え、 make のコマンドラインで指定されたオプションすべてを含みます。 | |
.TARGETS | |
make が現在構築しているターゲットのリスト。 | |
.INCLUDES | |
.INCLUDES 特殊ターゲット参照。 | |
.LIBS | |
.LIBS 特殊ターゲット参照。 | |
MACHINE | |
MACHINE 環境変数、または定義されていない場合は uname(3) によって得られる、 make が動作しているマシンアーキテクチャの名称。 | |
MACHINE_ARCH | |
make のコンパイル時に定義された make がどのマシンアーキテクチャ向けにコンパイルされたかを示す名称。 | |
VPATH | |
Makefile はコロンで区切られたディレクトリのリストを VPATH に設定することができます。 make が全ての入力 makefile の解析を終了した後、 このディレクトリでソースファイルを検索します。 | |
変数展開において、その変数内の単語を選択したり、変更したりすることが できます ( "単語" とは空白で区切られた文字列です)。 変数展開の一般形は、次のとおりです。
{variable[:modifier[:...]]}
各修飾子は、コロンと以下に示すいずれかの文字のうち 1 文字からなります。 リテラルなコロン (‘amp;:’) を指定するにはコロンの前にバックスラッシュ (‘\’) を置きます。
Camp;/ pattern | |
amp;/ replacementamp;/ [1g]拡張正規表現 pattern (re_format(7) を参照) に一致する部分それぞれを、 ed(1) スタイルの replacement 文字列と置換することで、その値の各語を変更します。 通常、値中の各語の最初のパターンを置換します。 ‘1’ 修飾子は、置換対象をたかだか 1 語に制限します。 ‘g’ 修飾子は、置換対象の個数が、 語 (または複数の語) 中で見つかる検索パターン数と同じになるようにします。 ‘1’ と ‘g’ は直交していることに注意してください。 前者は、複数の語が影響を受け得るか否かを指定しますが、 後者は、影響を受ける各語の中で複数の置換が発生し得るか否かを指定します。 | |
E | 変数中の各単語を拡張子で置換します。 |
H | 変数中の各単語を、パスの最後の要素 を除いた部分で置換します。 |
L | 変数を小文字に変換します。 |
Mpattern | |
pattern にマッチする単語を選択します。 標準的なワイルドカード (‘*’, ‘amp;?’, ‘[]’) が使用できます。 ワイルドカード文字はバックスラッシュ (‘\’) によりエスケープできます。 | |
Npattern | |
pattern にマッチしない単語を選択します。 それ以外は M と同様です。 | |
O | 変数中のすべての語をアルファベット的に整列させます。 |
Q | 変数中のすべてのシェルメタ文字をクォートし、再帰起動される make に安全に渡せるようにします。 |
R | 変数中の各単語から拡張子を取り除きます。 |
Samp;/ old_string | |
amp;/ new_stringamp;/ [g]変数の値で各単語中の最初の
old_string
を
new_string
に置換します。
もし、最後のスラッシュのあとに
‘g’
が指定されていれば、各単語中に出現したすべての
old_string
が
new_string
に置換されます。
old_string
がキャレット
(‘^’)
で始まっているなら、
old_string
を各単語の先頭からマッチさせることを
意味します。
old_string
がドル記号
(‘amp;$’)
で終わっているなら、その文字列を各単語の終端にマッチさせることを
意味します。
new_string
中のアンパサンド
(‘&’)
は
old_string
に置換されます。修飾文字列の区切りにはどんな文字を使ってもかまいません。
‘^’
,
‘$’
,
‘&’
と区切り文字はバックスラッシュ
(‘\’)
によりエスケープできます。
old_string と new_string 中では通常の変数置換が行われます。 ただし、ドル記号 (‘amp;$’) の展開を抑制するためには、通常のドル記号の前置ではなく、 バックスラッシュでエスケープします。 | |
old_string=new_string | |
これは AT&T V での変数置換の形式です。これは最後の修飾子として指定する必要があります。 もし、パターンマッチ文字 % が new_string にも old_string にも含まれないなら、 new_string と old_string はどちらも単語の最後にマッチするものとみなされます。 すなわち、 拡張子のみか、または単語全部が置換されることになります。 そうでなければ、 % が old_string に含まれており、それは new_string に置換されます。 | |
T | 変数中の各単語をパスの最後の要素 で置換します。 |
U | 変数を大文字に変換します。 |
amp;.include <file>
amp;.include qfileq | |
指定した makefile をインクルードします。
アングルブラケットが使用された場合は、
makefile はシステムの makefile ディレクトリにあるものを用います。
ダブルクォートが使用された場合は、
makefile が存在するディレクトリ、
| |
.undef variable | |
指定したグローバル変数を未定義とします。 グローバル変数のみ、未定義とすることができます。 | |
.error message | |
makefile の処理を即座に終了します。 makefile のファイル名と、どの行でエラーとなったかと、 指定したエラーメッセージとを、標準出力に表示し、 make は終了コード 1 で終了します。 | |
.warning message | |
警告メッセージを発します。 makefile のファイル名、どの行でエラーになったかと、 指定したエラーメッセージとを、標準エラー出力に表示します。 メッセージ中の変数は展開されます。 | |
条件文は Makefile のどの部分を処理するのかを判定するために使用します。 C プリプロセッサがサポートする条件文と同様に使用されます。 以下の条件文がサポートされています:
.if [amp;! ]expression [operator expression ...] 式の値をテストします。 | |
.ifdef [amp;! ]variable [operator variable ...] 変数の値をテストします。 | |
.ifndef [amp;! ]variable [operator variable ...] 変数の値をテストします。 | |
.ifmake [amp;! ]target [operator target ...] ターゲット target が作成中かどうかをテストします。 | |
.ifnmake [amp;! ]target [operator target ...] ターゲット target が作成中かどうかをテストします。 | |
.else | 最後に行った条件文の意味を逆にします。 |
.elif [amp;! ]expression [operator expression ...] .else と直後の .if を対にしたものです。 | |
.elifdef [amp;! ]variable [operator variable ...] .else と直後の .ifdef を対にしたものです。 | |
.elifndef [amp;! ]variable [operator variable ...] .else と直後の .ifndef を対にしたものです。 | |
.elifmake [amp;! ]target [operator target ...] .else と直後の .ifmake を対にしたものです。 | |
.elifnmake [amp;! ]target [operator target ...] .else と直後の .ifnmake を対にしたものです。 | |
.endif | 条件文の本体を終了させます。 |
オペレータ operator は、以下のうちのいずれかです。
|| | 論理 OR 。 |
&& | |
論理 AND 。 ' ||' より優先順位が上です。 | |
C 言語と同様、 make は条件式を、式の値を決定するのに必要なところまでしか評価しません。 評価順序を変更するには括弧を使います。 論理オペレータ ' !amp;' は条件式全体の値を反転するのに使用します。 これは ' &&' より優先順位が上です。
式 expression は、以下のいずれかの形式です:
defined | |
引数として変数名をとり、変数が定義されていれば真となる。 | |
make | 引数としてターゲット名をとり、そのターゲットが make のコマンドライン引数に指定されているか、デフォルトのターゲット (明示的なものも暗黙的なものも含む。 .MAIN の項を参照) として宣言されている場合に真となる。 |
empty | 引数として変数名 (と修飾子) をとり、展開した結果が空文字列ならば真となる。 |
exists | |
引数としてファイル名をとり、ファイルが存在すれば真となる。 ファイルはシステム検索パス ( .PATH の項を参照) にそって検索される。 | |
target | |
引数としてターゲット名をとり、ターゲットが定義されているなら真となる。 | |
条件式 expression としては、数値あるいは文字列の比較を用いることもでき、 左辺には変数展開を使用可能です。 比較オペレータの 両辺は、変数展開が適用されたあとに比較されます。 値が 0x で始まるなら 16 進数であると解釈し、 さもなければ 10 進数と解釈します。 8 進数はサポートしていません。 標準的な C 言語の関係オペレータは全て利用可能です。 変数展開後、 ' ==' または ' !=' の左辺値または右辺値のいずれかが数値とは認められない場合、文字列として 比較を行います。 関係オペレータが指定されなかった場合、展開された変数と 0 とを 比較します。
条件式を評価中に、評価できない単語が出現した場合は、条件式の形式によって、 "make" または "defined" オペレータを適用します。 条件式が .if, .ifdef または .ifndef ならば "defined" を、条件式が .ifmake または .ifnmake ならば "make" を、それぞれ適用します。
条件式が真と評価されたなら、makefile の解析はそのまま続行されます。 偽と評価されたなら、 .else または .endif が見つかるまで makefile の解析をスキップします。
for ループは、いくつかのルールを一連のファイルに適用するのによく 用いられます。 以下がループの形式です:
.for variable in expression
<make-rules> .endfor | |
expression は評価されたあとに単語に分解され、それぞれを variable に代入 しながら、 make-rules 部分を繰り返し展開します。
.IGNORE | |
本ターゲットに関連したコマンドでのエラーを無視します。 シェルコマンドの先頭にダッシュ ‘-’ を指定したのと等価です。 | |
.MAKE |
たとえ、
|
.NOTMAIN | |
通常 make は、最初に発見したターゲットをデフォルトのターゲットとみなします。 .NOTMAIN が指定されたターゲットはデフォルトのターゲットとはみなされなくなります。 | |
.OPTIONAL | |
もし .OPTIONAL が指定されたターゲットの作り方がわからなくても、エラーとはせず、 そのターゲットは必要ないか、すでに存在しているものとみなします。 | |
.PRECIOUS | |
通常 make が中断されたときは、作成途中のターゲットは削除されます。 本ソースを指定することで、そのターゲットを削除しなくなります。 | |
.SILENT | |
指定されたターゲットに関連づけられたシェルコマンドを実行するときに エコーを行いません。 シェルコマンドの先頭に ‘@’ を指定したのと等価です。 | |
.USE | 指定されたターゲットをマクロ的に扱います。 .USE をソースに持つターゲット (以下ではマクロと呼びます) が別のターゲットのソースとなった場合、その ターゲットはコマンド、ソース、属性( .USE は除く) をマクロから受け取ります。 もし、すでにターゲットにコマンドが指定されていた 場合は、マクロのコマンドが追加されます。 |
.WAIT | 特別な .WAIT ソースが依存関係行に現れた時には、ソースはその行中でソースが 作成されるまで待ちます。 ループは検出されず、ループ形式のターゲットは単に無視されます。 |
.BEGIN | 本ターゲットに指定されたシェルコマンドは他の処理に先立って実行されます。 |
.DEFAULT | |
これは、作成方法がわからないどんなターゲットにも適用される .USE ルールのようなものです。シェルスクリプトのみを使用します。 .DEFAULT に指定されたコマンド中の .IMPSRC 変数はターゲット自身の名前に置換されます。 | |
.END | 本ターゲットに指定されたシェルコマンドは、他のすべての処理の終了後に 実行されます。 |
.IGNORE | |
指定されたソースに
.IGNORE
属性を付与します。
もしソースが指定されていなければ、
| |
.INCLUDES | |
ソースファイル中で include される可能性のあるファイルの拡張子のリスト。
拡張子はあらかじめ
.SUFFIXES
で宣言されていなければなりません;
このように宣言された拡張子は自身の検索パス(
.PATH
参照)
にそれぞれ
| |
.INTERRUPT | |
make が中断されたとき、本ターゲットに指定されたコマンドを実行します。 | |
.LIBS |
.INCLUDES
が include ファイルに対して行うことと同じことを
ライブラリに対して行います。
ただし
|
.MAIN | ターゲットを指定せずに make が起動された場合、本ターゲットを処理します。 make がデフォルトターゲットを選択した際に、 利用者がコマンドラインからデフォルトターゲットを指示できるようにするため、 明示的・暗黙的に関わらず必ず設定されます。 |
.MAKEFLAGS | |
ソースにおいて、
make
に指定するフラグを指定します。
フラグはシェルでタイプしたのと同様に
渡されますが、
| |
.MFLAGS | |
上と同様です。下位互換性のためのものです。 | |
.NOTPARALLEL | |
並列モードを使いません。 | |
.NO_PARALLEL | |
上と同じですが、 pmake の変種のための互換性のためにあります。 | |
.ORDER | シーケンス中の名前付きターゲットが作成されます。 |
.PATH | カレントディレクトリに発見できなかったときのファイルの検索パスを、 本ターゲットのソースとして指定します。 ソースが指定されなかった場合、 以前に設定されていたディレクトリが無効になります。 可能であれば .PATH を利用する方が、 VPATH 変数を利用するよりも好まれています。 |
.PATHsuffix | |
カレントディレクトリに発見できなかったときの suffix のついたファイルの検索パスをソースとして指定します。 make ユーティリティはファイルが見つからなかった場合に、 デフォルトパスよりも先に、まず suffix の付いた検索パスで探します。 この形式は .LIBS と .INCLUDES が動作するために必要です。 | |
.PHONY | .PHONY 属性を指定したソースに適用します。 この属性を持ったターゲットは いつでも更新されていると考えられます。 |
.PRECIOUS | |
指定されたソースに .PRECIOUS 属性を付与します。 もし、ソースが指定されなかった場合、 すべてのターゲットに .PRECIOUS 属性を与えます。 | |
.SILENT | |
指定されたソースに .SILENT 属性を付与します。 もし、ソースが指定されなかった場合、 ファイル中のすべてのコマンドに .SILENT 属性を与えます。 | |
.SUFFIXES | |
ソースにおいて、 make で用いる拡張子を指定します。 ソースが指定されなかった場合は、 以前の指定が無効になります。 | |
ここに書かれている以上の make の奥義のほとんどは、 より多くの互換性を保つために使用を避けるべきです。
.depend | 依存関係リスト |
Makefile | 依存関係リスト |
makefile | 依存関係リスト |
obj | オブジェクトディレクトリ |
sys.mk | システム定義の makefile (他のすべてのファイルよりも前に処理されます。 これには makefile と Makefile も含まれます) |
/usr/share/mk | システム定義の makefile が置かれるディレクトリ |
/usr/share/doc/psd/12.make | |
PMake のチュートリアル | |
/usr/obj | デフォルトの MAKEOBJDIRPREFIX ディレクトリ |
make -V .MAKEFILE_LIST | tr \ \\n
複数の .MAIN 特殊ターゲットが存在した場合、 make は最初のもの以外は黙って無視します。
make がターゲット名なしに起動され、かつ、 .MAIN 特殊ターゲットが存在しなかった場合、 .TARGETS にデフォルトターゲットは設定されません。
テストにおける expression の評価は非常に単純です。 今のところ、 ‘.if ${VAR} op something’ という形式でしか動きません。 例えば、テストは ‘.if ${VAR} == string’ のように書かなければなりません。 他の書き方ではエラーになります。
for ループはテストされる前に展開されるため、
amp;.for ARCH in ${SHARED_ARCHS} amp;.if ${ARCH} == ${MACHINE} ... amp;.endif amp;.endfor
のような断片は動きません。 例えば、
amp;.for ARCH in ${SHARED_ARCHS} amp;.if ${MACHINE} == ${ARCH} ... amp;.endif amp;.endfor
のように書き直す必要があります。
コロンの後のセミコロンの扱いに関して解析コードが壊れているため、
HDRS= foo.h bar.hall: amp;.for h in ${HDRS:S;^;${.CURDIR}/;} ... amp;.endfor
のような断片は動きません。
MAKE (1) | August 4, 2004 |
総合手引 | セクション 1 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Ken Thompson has an automobile which he helped design. Unlike most automobiles, it has neither speedometer, nor gas gauge, nor any of the other numerous idiot lights which plague the modern driver. Rather, if the driver makes a mistake, a giant “?” lights up in the center of the dashboard. “The experienced driver,” says Thompson, “will usually know what's wrong.” | ” |