これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド pmake です。
プログラム:
NAME
作る — プログラムの依存関係を維持する
SYNOPSIS
作る [-BeikNnqrstWwX] [-C ディレクトリにジョブを開始します。] [-D 変数] [-d フラグ] [-f メイクファイル] [-I ディレクトリにジョブを開始します。]
[-J プライベート] [-j max_jobs] [-m ディレクトリにジョブを開始します。] [-T file] [-V 変数] [変数=値]
[ターゲット ...]
DESCRIPTION
作る は、他のプログラムのメンテナンスを簡素化するために設計されたプログラムです。 その入力は
プログラムやその他のファイルが依存するファイルに関する仕様のリスト。 いいえの場合 -f
メイクファイル makefile オプションが指定されている場合、 作る を開こうとします 'メイクファイル'then'メークファイル'
仕様を調べるためです。 ファイル「。それによる' が存在する場合は読み取られます (参照 mkdep(1))。
このマニュアル ページは参考資料としてのみ使用できます。 より詳しい説明については
of 作る およびメイクファイルについては、を参照してください。 PMake - A チュートリアル.
作る の内容を先頭に追加します メイクフラグ コマンドラインへの環境変数
解析する前の引数。
オプションは以下のとおりです。
-B コマンドごとに XNUMX つのシェルを実行し、下位互換性を保つようにしてください。
コマンドを実行して依存関係行のソースを順番に作成します。
-C ディレクトリにジョブを開始します。
への変更 ディレクトリにジョブを開始します。 Makefile を読んだり、他のことをしたりする前に。 もしも
の試合に -C オプションが指定されている場合、それぞれは前のオプションと相対的に解釈されます。
-C / -C 等 に相当します -C の/ etc.
-D 変数
定義する 変数 グローバルコンテキストでは 1 になります。
-d [-]フラグ
デバッグをオンにし、どの部分を指定するかを指定します。 作る デバッグを出力することです
情報。 フラグの前に「-」がない限り、フラグは メイクフラグ
環境変数であり、子 make プロセスによって処理されます。 デフォルトでは、
デバッグ情報は標準エラーに出力されますが、これは次を使用して変更できます。
F デバッグフラグ。 デバッグ出力は常にバッファリングされません。 さらに、もし
デバッグが有効になっているが、デバッグ出力が標準出力に送られない場合
標準出力はラインバッファリングされます。 フラグ 次の XNUMX つ以上です。
A 考えられるすべてのデバッグ情報を出力します。 すべてを指定するのと同等
デバッグフラグ。
a アーカイブの検索とキャッシュに関するデバッグ情報を出力します。
C 現在の作業ディレクトリに関するデバッグ情報を出力します。
c 条件付き評価に関するデバッグ情報を出力します。
d ディレクトリの検索とキャッシュに関するデバッグ情報を出力します。
e 失敗したコマンドとターゲットに関するデバッグ情報を出力します。
F[+]ファイル名
デバッグ出力を書き込む場所を指定します。 これが最後のフラグでなければなりません、
引数の残りを消費するためです。 キャラクターの場合
「F」フラグが「+」の直後、ファイルは次の形式で開かれます。
追加モード。 そうしないと、ファイルが上書きされます。 ファイル名が
'stdout' または 'stderr' の場合、デバッグ出力は標準ファイルに書き込まれます。
それぞれ出力または標準エラー出力ファイル記述子 (および「+」
オプションは効果がありません)。 それ以外の場合、出力は指定されたファイルに書き込まれます。
ファイル。 ファイル名が「.%d」で終わる場合、「%d」は pid に置き換えられます。
f ループ評価に関するデバッグ情報を出力します。
g1 何かを作成する前に、入力グラフを印刷します。
g2 すべてを作成した後、またはエラーで終了する前に、入力グラフを印刷します。
g3 エラーで終了する前に入力グラフを出力します。
j 複数のシェルの実行に関するデバッグ情報を出力します。
l プレフィックスが付いているかどうかに関係なく、Makefile 内のコマンドを出力します。
「@」または他の「静かな」フラグによって。 「大声」行動とも呼ばれます。
M ターゲットに関する「メタ」モードの決定に関するデバッグ情報を出力します。
m ターゲットの作成に関するデバッグ情報 (変更を含む) を出力します。
日付。
n コマンド実行時に作成された一時コマンドスクリプトは削除しないでください。
これらの一時スクリプトは、
TMPDIR 環境変数、または / tmpに TMPDIR が設定されていない場合、または に設定されている場合
空の文字列。 一時スクリプトは次のように作成されます。 ムクテンプ(3) そして、
フォームの名前 作るXXXXXX. 注意: これにより、TMPDIR または
/ tmpに、注意して使用してください。
p Makefile の解析に関するデバッグ情報を出力します。
s 接尾辞変換ルールに関するデバッグ情報を出力します。
t ターゲット リストのメンテナンスに関するデバッグ情報を出力します。
V 強制する -V 変数の生の値を出力するオプション。
v 変数の割り当てに関するデバッグ情報を出力します。
x シェルコマンドを実行するには -x 実際のコマンドはそのまま出力されます
実行されました。
-e 環境変数が Makefile 内のマクロ割り当てをオーバーライドするように指定します。
-f メイクファイル
デフォルトの ' の代わりに読み取るメイクファイルを指定します。メイクファイル'。 もし メイクファイル それは、-'、
標準入力が読み込まれます。 複数の Makefile を指定することができ、それらは
指定された順序。
-I ディレクトリにジョブを開始します。
メイクファイルおよび含まれるメイクファイルを検索するディレクトリを指定します。 の
システムの makefile ディレクトリ (またはディレクトリ。 -m オプション)は自動的に
このリストの一部として含まれています。
-i メイクファイル内のシェル コマンドのゼロ以外の終了を無視します。 指定と同等
'-' メイクファイルの各コマンド ラインの前に追加します。
-J プライベート
このオプションは、 ユーザーが指定することができます。
時 j オプションが再帰的ビルドで使用されている場合、このオプションは make によって渡されます。
子メイクは、ビルド内のすべてのメイクプロセスが連携して回避できるようにします。
システムに過負荷がかかります。
-j max_jobs
ジョブの最大数を指定します。 作る いつでも実行できる可能性があります。 の
値はに保存されます .メイクジョブ。 互換性モードをオフにします。 B フラグは
も指定されています。 互換モードがオフの場合、互換モードに関連付けられているすべてのコマンドは、
ターゲットは、従来のシェル呼び出しとは対照的に、単一のシェル呼び出しで実行されます。
行ごとのシェル呼び出し。 これにより、変更される従来のスクリプトが壊れる可能性があります。
コマンドを呼び出すたびにディレクトリが作成され、新しいディレクトリから開始されることが期待されます。
次の行の環境。 むしろスクリプトを修正する方が効率的です
下位互換性をオンにするよりも。
-k エラーが発生した後も処理を続行しますが、エラーが発生したターゲットでのみ処理を続行します。
作成によりエラーが発生したターゲットには依存しません。
-m ディレクトリにジョブを開始します。
sys.mk と makefile を検索するディレクトリを指定します。
⟨file⟩ スタイルの include ステートメント。 の -m オプションを複数回使用して、
検索パス。 このパスは、デフォルトのシステム インクルード パスをオーバーライドします。
/usr/share/mk. さらに、システムインクルードパスが検索に追加されます。
"に使用されるパスfile"-style include ステートメント ( -I オプション)。
ファイル名またはディレクトリ名が -m 引数 (または MAKESYSPATH 環境)
変数) 文字列「.../」で始まり、その後 作る 指定されたものを検索します
引数文字列の残りの部分で指定されたファイルまたはディレクトリ。 検索
Makefile の現在のディレクトリから始まり、上方向に向かって作業が行われます。
ファイルシステムのルート。 検索が成功すると、結果のディレクトリが
の「.../」指定を置き換えます。 -m 口論。 この機能を使用すると、
作る 現在のソース ツリー内でカスタマイズされた sys.mk ファイルを簡単に検索できます (例:
".../mk/sys.mk" を引数として使用します)。
-n 実行されるはずのコマンドを表示しますが、実際には実行しません
ただし、ターゲットが .MAKE 特殊ソースに依存している場合は除きます (以下を参照)。
-N 実行されるはずのコマンドを表示しますが、実際には何も実行されません。
そのうちの; トップレベルの Makefile をデバッグするのに役立ちます。
サブディレクトリ。
-q コマンドは実行せず、指定されたターゲットが最新であり、最新の場合は 0 を終了します。
1、そうでない場合。
-r システムのメイクファイルで指定された組み込みルールは使用しないでください。
-s コマンドの実行時にコマンドをエコーしないでください。 ' を指定するのと同じ@' 前に
メイクファイル内の各コマンドライン。
-T トレースファイル
と一緒に使用する場合 -j フラグ、トレース レコードを追加する トレースファイル 開始されたジョブごとに
そして完成しました。
-t メイクファイルで指定されているようにターゲットを再構築するのではなく、ターゲットを作成または更新します。
最新に見えるようにするための変更時刻。
-V 変数
印刷物 作るの価値についての考え 変数、グローバルな文脈で。 建てないでください
あらゆるターゲット。 このオプションの複数のインスタンスを指定できます。 変数は
XNUMX 行に XNUMX つずつ出力され、null または未定義の変数ごとに空白行が表示されます。 もし
変数 「$」が含まれている場合、値は印刷前に展開されます。
-W Makefile の解析中の警告はすべてエラーとして扱います。
-w ディレクトリへの出入りのメッセージ、前処理と後処理を出力します。
-X コマンドラインで渡された変数を環境に個別にエクスポートしないでください。
コマンドラインで渡された変数は引き続き、 メイクフラグ
環境変数。 このオプションは、制限が小さいシステムで役立つ場合があります。
コマンド引数のサイズについて。
変数=値
変数の値を設定します 変数 〜へ 値。 通常、すべての値は
コマンド ラインは環境内のサブメイクにもエクスポートされます。 の -X フラグ
この動作を無効にします。 変数の割り当ては、POSIX のオプションに従う必要があります。
互換性はありますが、順序は強制されません。
メイクファイルには XNUMX つの異なるタイプの行があります。ファイルの依存関係の仕様、
シェルコマンド、変数の代入、インクルードステートメント、条件ディレクティブ、for ループ、
とコメント。
一般に、行をバックスラッシュで終了することにより、ある行から次の行に継続することができます。
('\')。 次の行の末尾の改行文字と最初の空白は次のとおりです。
単一の空間に圧縮されます。
FILE 依存 規格
依存関係行は、XNUMX つ以上のターゲット、演算子、XNUMX 個以上のソースで構成されます。
これにより、ターゲットがソースに「依存」し、通常は
それらから作成されました。 ターゲットとソースの間の正確な関係が決定される
それらを分離する演算子によって。 XNUMX つの演算子は次のとおりです。
: ターゲットの変更時間が他のターゲットよりも短い場合、ターゲットは古いとみなされます。
その情報源の。 この場合、ターゲットのソースは依存関係の境界線を越えて蓄積されます。
演算子が使用されます。 次の場合、ターゲットは削除されます。 作る 中断されます。
! ターゲットは常に再作成されますが、すべてのソースが検査されて再作成されるまでは再作成されません。
必要に応じて作成されます。 この場合、ターゲットのソースは依存関係の境界線を越えて蓄積されます。
演算子が使用されます。 次の場合、ターゲットは削除されます。 作る 中断されます。
:: ソースが指定されていない場合、ターゲットは常に再作成されます。 それ以外の場合、ターゲットは
ソースのいずれかが以前よりも新しく変更された場合、古いものとみなされます。
目標。 この場合、ターゲットのソースは依存関係の境界線を越えて蓄積されません。
演算子が使用されます。 次の場合、ターゲットは削除されません。 作る 中断されます。
ターゲットとソースには、シェルのワイルドカード値「?」、「*」、「[]」、「{}」を含めることができます。 の
値「?」、「*」、「[]」は、ターゲットの最終コンポーネントの一部としてのみ使用できます。
ソースであり、既存のファイルを記述するために使用する必要があります。 値「{}」は必ずしもそうである必要はありません
既存のファイルを記述するために使用されます。 展開はディレクトリ順であり、アルファベット順ではありません。
シェル内で行われます。
SHELL コマンド
各ターゲットには、通常使用される XNUMX 行以上のシェル コマンドが関連付けられている場合があります。
ターゲットを作成します。 このスクリプトの各行は、 しなければなりません 前にタブを付けます。 (のために
歴史的な理由から、スペースは受け入れられません。) ターゲットは多くの依存関係に現れる可能性がありますが、
必要に応じて行を作成できますが、デフォルトでは、これらのルールのうち XNUMX つのみに作成スクリプトが従うことができます。
「::' 演算子が使用されますが、すべてのルールにスクリプトが含まれる場合があり、そのスクリプトは
見つかった順に実行されます。
行末がエスケープされない限り、各行は個別のシェルコマンドとして扱われます。
バックスラッシュ ('\') の場合、その行と次の行が結合されます。 最初の文字の場合
コマンドの任意の組み合わせは '@'、'+'、 また '-' の場合、コマンドは特別に扱われます。 あ
'@' を指定すると、コマンドが実行される前にエコーされなくなります。 ああ+' コマンドにより、
場合でも実行される -n が与えられる。 これは、.MAKE スペシャルの効果と似ています。
ただし、効果がスクリプトの XNUMX 行に限定される場合がある点が異なります。 ああ-'
互換モードでは、コマンド ラインのゼロ以外の終了ステータスは無視されます。
日時 作る ジョブモードで実行されます -j max_jobs、ターゲットのスクリプト全体がフィードされます。
シェルの単一インスタンス。 互換性 (非ジョブ) モードでは、各コマンドは
別のプロセス。 コマンドにシェルメタ文字が含まれている場合
('#=|^(){};&<>*?[]:$`\\n') これはシェルに渡されます。 さもないと 作る しようとします
直接実行。 行が「」で始まる場合-' シェルで ErrCtl が有効になっている場合は失敗します
コマンドラインの は互換モードと同様に無視されます。 さもないと '-' に影響を与えます
仕事全体。 スクリプトは失敗した最初のコマンドラインで停止しますが、ターゲットは
失敗したとはみなされません。
Makefile は、モードが次のように記述される必要があります。 作る 操作では変更されません
行動。 たとえば、「cd」または「chdir」を使用する必要があるコマンドは、潜在的に
後続のコマンドでディレクトリを変更する場合は、実行されるように括弧で囲む必要があります。
サブシェル内。 XNUMX つのシェルを強制的に使用するには、改行をエスケープして、
スクリプト全体を XNUMX つのコマンドで実行できます。 例えば:
chdir の副作用を回避:
@echo `pwd` に $@ を構築します
@(cd ${.CURDIR} && ${MAKE} $@)
@echo `pwd` に戻ります
モードに関係なく、XNUMX つのシェルを保証します:
@echo `pwd` に $@ を構築します。 \
(cd ${.CURDIR} && ${MAKE} $@); \
echo `pwd` に戻る
Since 作る 意志 Chdir(2)から「.OBJDIR' ターゲットを実行する前に、各子プロセス
それを現在の作業ディレクトリとして起動します。
変数 割り当て
make の変数はシェルの変数とよく似ており、伝統的に次のもので構成されます。
大文字。
変数 割り当て 修飾子
変数に値を代入するために使用できる XNUMX つの演算子は次のとおりです。
= 値を変数に代入します。 以前の値はすべて上書きされます。
+= 値を変数の現在の値に追加します。
?= まだ定義されていない場合は、変数に値を割り当てます。
:= 拡張を使用して代入します。つまり、値を変数に代入する前に値を拡張します。
通常、変数が参照されるまで展開は行われません。 注意: 参考文献
未定義の変数には 拡張されました。 これにより、変数が変化する場合に問題が発生する可能性があります
修飾子が使用されます。
!= 値を展開して実行のためにシェルに渡し、結果を
変数。 結果内の改行はスペースに置き換えられます。
割り当てられた文字の前の空白 値 削除されます。 値が追加される場合、
変数の前の内容と追加された内容の間に単一のスペースが挿入されます。
の値です。
変数は、変数名を中括弧 ('{}') で囲むか、または
かっこ (「()」) とその前にドル記号 (「$」) を付けます。 変数名に次のものが含まれている場合、
単一文字のみの場合、周囲の中括弧や括弧は必要ありません。 これより短い
という形式は推奨されません。
変数名にドルが含まれている場合は、名前自体が最初に展開されます。 これにより、
ほぼ任意の変数名。ただし、名前にドル、中括弧、括弧、または
空白は本当に避けるのが最善です。
変数を展開した結果にドル記号 ('$') が含まれる場合、文字列は展開されます。
再び。
変数の置換は、変数がどこにあるかに応じて XNUMX つの時点で発生します。
使用されています。
1. 依存関係行内の変数は、その行が読み取られると展開されます。
2. シェルコマンド内の変数は、シェルコマンド実行時に展開されます。
3. 「.for」ループ インデックス変数は、ループの反復ごとに展開されます。 その他に注意してください
変数はループ内で展開されないため、次のコード例は次のようになります。
.for i in 1 2 3
a+= ${i}
j= ${i}
b+= ${j}
.endfor
すべて:
@エコー ${a}
@エコー ${b}
印刷されます:
1 2 3
3 3 3
ループ実行後の ${a} には「1 2 3」が含まれますが、${b} には「${j}」が含まれるためです。
${j} ${j}" は、ループが完了すると ${j} に "3" が含まれるため、"3 3 3" に展開されます。
変数 クラス
変数の XNUMX つの異なるクラス (優先順位の高い順) は次のとおりです。
環境変数
の一部として定義された変数 作るの環境。
グローバル変数
Makefile または組み込まれた Makefile で定義された変数。
コマンドライン変数
コマンドラインの一部として定義される変数。
ローカル変数
特定のターゲットに固有に定義される変数。
ローカル変数はすべて組み込まれており、その値はターゲットごとに魔法のように異なります。 それ
現在、新しいローカル変数を定義することはできません。 XNUMX つのローカル変数は次のとおりです。
以下:
.ALLSRC このターゲットのすべてのソースのリスト。 としても知られている '>'。
。アーカイブ アーカイブ ファイルの名前。 としても知られている '!'。
.IMPSRC サフィックス変換ルールでは、変換元のソースの名前/パス。
ターゲットは変換されます (「暗黙の」ソース)。 としても知られている '<'。 それ
明示的なルールでは定義されていません。
。メンバー アーカイブメンバーの名前。 としても知られている '%'。
.OODATE このターゲットの古いと思われるソースのリスト。 でも知られている
'と?'。
.プレフィックス ターゲットのファイルプレフィックス。ファイル部分のみを含み、サフィックスは含まれません。
またはその前のディレクトリコンポーネント。 としても知られている '*'。 サフィックスは次のようにする必要があります
で宣言された既知の接尾辞の XNUMX つ 。接尾辞 あるいはそうではないだろう
認識された。
。目標 ターゲットの名前。 としても知られている '@'。
短い形式 ('>'、'!'、'<'、'%'、'?'、'*'、'@') は逆方向に許可されます
過去の Makefile および従来の POSIX Make との互換性がないため、推奨されません。
これらの変数の直後に句読点「D」または「F」を付けたもの。例:
'$(@D)' は、':H' および ':T' 修飾子を使用するのと同等の従来の形式です。 これらの形式は、
AT&T System V UNIX Makefile および POSIX との互換性は認められていますが、そうではありません
お勧めします。
ローカル変数のうち XNUMX つは、拡張されるため、依存関係行のソースで使用される可能性があります。
ライン上の各ターゲットの適切な値に設定します。 これらの変数は '。目標'、'.プレフィックス'、
'。アーカイブ'、'。メンバー'。
NEW 内蔵 variables
加えて、 作る 次の変数を設定するか、それについて知っています。
$ 単一のドル記号「$」、つまり「$$」は単一のドル記号に展開されます。
.ALLTARGETS Makefile 内で検出されたすべてのターゲットのリスト。 途中で評価された場合
Makefile を解析すると、これまでに検出されたターゲットのみがリストされます。
.CURDIR ディレクトリへのパス 作る 処刑されました。 説明を参照してください
詳細については、「PWD」のを参照してください。
.INCLUDEDFromDIR
この Makefile がインクルードされたファイルのディレクトリ。
.INCLUDEDFROMFILE
この Makefile が含まれているファイルのファイル名。
その名前を作る 作る (で実行されました)argv [0])。 互換性のため 作る
セットも 。作る 同じ値です。 使用するのに好ましい変数は、
環境変数 MAKE は他のバージョンとの互換性が高いため
of 作る 同じ名前の特別なターゲットと混同することはできません。
.Make.dependfile
メイクファイルに名前を付けます (デフォルトは '。それによる') 生成された依存関係のソース
読み。
.MAKE.EXPAND_VARIABLES
のデフォルトの動作を制御するブール値。 -V オプションを選択します。
.Make.Exported によってエクスポートされた変数のリスト 作る.
.メイクジョブ に対する議論は、 -j オプションを選択します。
.メイク.ジョブ.プレフィックス
If 作る で実行されます j 各ターゲットの出力にはトークンが接頭辞として付けられます
「--- ターゲット ---」の最初の部分は次の方法で制御できます。
.メイク.ジョブ.プレフィックス。 場合 .メイク.ジョブ.プレフィックス が空の場合、トークンは出力されません。
例: .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}] は次のようになります。
「---make[1234] target ---」のようなトークンを生成し、追跡を容易にします。
達成される並列度。
MAKEFLAGS 環境変数 'MAKEFLAGS' には、次のものをすべて含めることができます。
に指定 作るのコマンドライン。 に指定されたもの 作るさんの命令
行が「MAKEFLAGS」変数に追加され、変数に入力されます。
すべてのプログラムのための環境 作る 実行します。
.メイクレベル 再帰の深さは、 作る。 の最初のインスタンス 作る は 0 になり、
インクリメントされた値が環境に置かれ、次の環境で参照されます。
世代。 これにより、 .if ${.MAKE.LEVEL} == 0 のようなテストが可能になり、保護することができます。
最初のインスタンスでのみ評価されるべきもの 作る.
.MAKE.MAKEFILE_PREFERENCE
メイクファイル名の順序付きリスト (デフォルトは 'メイクファイル'、'メークファイル') それ
作る 探します。
.Make.Makefiles
によって読み取られるメイクファイルのリスト 作る、追跡に役立ちます
依存関係。 各メイクファイルは、数に関係なく XNUMX 回だけ記録されます。
何度も読んだ。
.メイクモード すべてのメイクファイルを読み取った後に処理されます。 モードに影響を与える可能性があります 作る runs
これには、いくつかのキーワードを含めることができます。
互換性 いいね -B、置きます 作る 「互換」モードにします。
メタ 置く 作る 「メタ」モードに移行すると、メタファイルが作成されます。
各ターゲットはコマンドの実行、生成された出力をキャプチャし、
if filemon(4) のシステムコールが利用可能です。
への興味 作る。 キャプチャされた出力は、次のような場合に非常に役立ちます。
エラーの診断。
curdirOk= bf 通常は 作る には .meta ファイルは作成されません.CURDIR'。 これ
設定によって上書きできます bf を表す値に
真。
env デバッグの場合、環境を含めると便利です。
.meta ファイル。
詳細 「メタ」モードの場合は、ビルド中のターゲットに関する手がかりを出力します。
これは、ビルドがサイレントで実行されている場合に便利です。 の
メッセージには次の値が出力されました。 .Make.META.PREFIX.
無視-cmd 一部のメイクファイルには、単に安定していないコマンドが含まれています。 これ
キーワードを指定すると、キーワードが無視されるかどうかを判断します。
「メタ」モードではターゲットが最新ではありません。 こちらも参照 .NOMETA_CMP.
沈黙= bf If bf True の場合、.meta ファイルの作成時にターゲットをマークします
。静けさ.
.メイク.メタ.ベイリウィック
「メタ」モードでは、ディレクトリに一致するプレフィックスのリストを提供します。
によって制御されます 作る。 外部で生成されたファイルの場合、 .OBJDIR 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。
前記ベイリウィック内で行方不明であるため、現在のターゲットは範囲外であると考えられます。
日付。
.メイクメタ作成
「メタ」モードでは、この変数には更新されたすべてのメタ ファイルのリストが含まれます。
空でない場合は、次の処理をトリガーするために使用できます。 .Make.メタファイル.
.Make.メタファイル
「メタ」モードでは、この変数には使用されるすべてのメタ ファイルのリストが含まれます。
(更新されているかどうか)。 このリストを使用してメタ ファイルを処理して、
依存関係情報を抽出します。
.MAKE.META.IGNORE_PATHS
無視する必要があるパス接頭辞のリストを提供します。 なぜなら
内容は時間の経過とともに変化することが予想されます。 デフォルトのリストには次のものが含まれます:/ dev
の/ etc / proc / tmpに / var / run / var / tmp'
.Make.META.PREFIX
「meta verbose」で更新されたメタファイルごとに出力されるメッセージを定義します。
モード。 デフォルト値は次のとおりです。
${.TARGET:H:tA}/${.TARGET:T} の構築
.変身 この変数は、に割り当てられた変数の名前を記録するために使用されます。
コマンド ラインを使用して、「MAKEFLAGS」の一部としてエクスポートできるようにします。 これ
この動作は、空の値を ' に割り当てることで無効にできます。.変身'
メイクファイル内で。 追加の変数は、次の方法でメイクファイルからエクスポートできます。
彼らの名前を「」に追加する.変身'。 「MAKEFLAGS」が再エクスポートされました
いつでも '.変身」が修正されます。
.MAKE.PATH_FILEMON
If 作る で構築されました filemon(4) サポート、これはのパスに設定されます
デバイスノード。 これにより、makefile でこのサポートをテストできるようになります。
.メイク.PID のプロセス ID 作る.
.Make.PPID の親プロセス ID 作る.
.MAKE.SAVE_DOLLARS
value は、実行時に '$$' を保持するかどうかを制御するブール値である必要があります。
「:=」の代入。 下位互換性を確保するため、デフォルトは false です。 セット
他のメーカーとの互換性のために true に設定します。 false に設定すると、「$$」は次のようになります。
通常の評価ルールによる「$」。
MAKE_PRINT_VAR_ON_ERROR
日時 作る エラーにより停止した場合、その名前と値を出力します。
'.CURDIR' およびで指定された変数の値
'MAKE_PRINT_VAR_ON_ERROR'。
.改行 この変数には、値として改行文字が割り当てられるだけです。 これ
を使用した拡張が可能になります :@ 反復間に改行を入れる修飾子
スペースではなくループの。 たとえば、
'MAKE_PRINT_VAR_ON_ERROR' は次のように実行できます
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}。
.OBJDIR ターゲットが構築されるディレクトリへのパス。 その値は
しようとすることで決定される Chdir(2) 以下のディレクトリに順番に移動し、
最初の一致を使用して:
1. ${MAKEOBJDIRPREFIX}${.CURDIR}
(環境またはコマンドで「MAKEOBJDIRPREFIX」が設定されている場合のみ)
ライン。)
2. ${MAKEOBJDIR}
(環境またはコマンドで「MAKEOBJDIR」が設定されている場合のみ)
ライン。)
3. ${.CURDIR}/obj.${マシン}
4. ${.CURDIR}/obj
5. /usr/obj/${.CURDIR}
6. ${.CURDIR}
変数の展開は使用される前に値に対して実行されるため、
などの表現
${.CURDIR:S,^/ usr / src,/var/obj,}
使用される場合があります。 これは、「MAKEOBJDIR」で特に便利です。
'.OBJDIR' は特別なターゲットを介してメイクファイル内で変更できます '.OBJDIR'。
すべての場合において、 作る 意志 Chdir(2) 指定されたディレクトリが存在する場合は、そこにコピーします。
そして「」を設定します.OBJDIRターゲットを実行する前に、そのディレクトリに ' と 'PWD' を追加します。
.PARSEDIR 現在の ' のディレクトリへのパスメークファイル' 解析中です。
.PARSEFILE 現在の ' のベース名メークファイル' 解析中です。 この変数と
'.PARSEDIR' は両方とも ' の間のみ設定されます。Makefile' が解析されています。 もし
現在の値を保持したい場合は、次を使用して変数に代入します。
展開を伴う代入: (':=')。
。パス ディレクトリのリストを表す変数。 作る 検索します
ファイル用。 検索リストはターゲットを使用して更新する必要があります '。パス'
変数ではなく。
PWD 現在のディレクトリへの代替パス。 作る 通常は「」を設定します.CURDIR' に
によって与えられる正規のパス getcwd(3)。 ただし、環境変数が
「PWD」が設定され、現在のディレクトリへのパスが与えられます。 作る セット
'.CURDIR' の代わりに 'PWD' の値に変更します。 この動作は次の場合に無効になります。
「MAKEOBJDIRPREFIX」が設定されているか、「MAKEOBJDIR」に変数変換が含まれています。
「PWD」は「」の値に設定されます.OBJDIR' すべてのプログラムに対して 作る
実行します。
.TARGETS コマンドラインで明示的に指定されたターゲットのリスト (存在する場合)。
VPATH コロン区切り (「:」) で指定されたディレクトリのリスト。 作る ファイルを検索します。
この変数は古い make プログラムとの互換性のためにのみサポートされています。使用してください。
'。パス' 代わりは。
変数 修飾子
変数の展開を変更して、変数の各単語を選択または変更することができます (ここで、
「単語」は空白で区切られた一連の文字です)。 変数の一般的な形式
展開は以下の通りです。
${変数[:修飾子[:...]]}
各修飾子はコロンで始まり、バックスラッシュ ('\') でエスケープできます。
次のように、変数を介して一連の修飾子を指定できます。
modifier_variable=修飾子[:...]
${変数:${modifier_variable}[:...]}
この場合、modifier_variable の最初の修飾子はコロンで始まりません。
それは参照変数に現れる必要があります。 修飾子のいずれかが
modifier_variable にはドル記号 ('$') が含まれています。早期に回避するには、これらを XNUMX つにする必要があります。
拡張。
サポートされている修飾子は次のとおりです。
:E 変数内の各単語をその接尾辞に置き換えます。
:H 変数内の各単語を、最後のコンポーネントを除くすべての単語に置き換えます。
:Mパターン
一致する単語のみを選択します パターン。 標準のシェルのワイルドカード文字
(「*」、「?」、および「[]」) を使用できます。 ワイルドカード文字は、
バックスラッシュ ('\')。 値が単語に分割され、照合され、
次に結合され、次のような構成になります
${VAR:M*}
単語間の間隔を正規化し、先頭と末尾のスペースをすべて削除します。
複数の連続したスペースを単一のスペースに変換します。
:Nパターン
これは「」と同じです:M' ただし、一致しない単語をすべて選択します パターン.
:O 変数内のすべての単語をアルファベット順に並べます。 単語を逆順に並べ替えるには、
':O:[-1..1]' 修飾子の組み合わせ。
:牛 変数内の単語をランダム化します。 参照するたびに結果が異なります
変更された変数に。 拡張付きの割り当てを使用します (':=') そのようなことを防ぐために
行動。 例えば、
LIST= ウノ ドゥエ トレ クワトロ
RANDOM_LIST= ${LIST:Ox}
STATIC_RANDOM_LIST:= ${LIST:Ox}
すべて:
@echo "${RANDOM_LIST}"
@echo "${RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
次のような出力が生成される場合があります。
クワトロ ドゥエ トレウノ
トレ ドゥエ クワトロ ウノ
ドゥエ ウノ クワトロ トレ
ドゥエ ウノ クワトロ トレ
:Q 安全に渡せるように、変数内のすべてのシェル メタ文字を引用符で囲みます。
の再帰呼び出しを通じて 作る.
:R 変数内の各単語をその接尾辞を除くすべての単語に置き換えます。
:gmtime
値は、次の形式文字列です。 ストラフタイム(3)、電流を使用して グラムタイムとします。
:ハッシュ
値の 32 ビット ハッシュを計算し、XNUMX 進数としてエンコードします。
:現地時間
値は、次の形式文字列です。 ストラフタイム(3)、電流を使用して 現地時間とします。
:tA を使用して変数を絶対パスに変換しようとします リアルパス(3) それが失敗した場合、
値は変わりません。
:tl 変数を小文字に変換します。
:tsc
変数内の単語は通常、展開時にスペースで区切られます。 この修飾子
区切り文字を文字に設定します c。 場合 c が省略された場合、区切り文字は使用されません。
一般的なエスケープ (XNUMX 進数値コードを含む) は期待どおりに機能します。
:つ 変数を大文字に変換します。
:tW 値を XNUMX つの単語として処理します (埋め込まれた白が含まれる可能性があります)。
空間)。 「」も参照してください。:[*]'。
:tw 値が空白で区切られた一連の単語として扱われます。 見る
また ':[@]'。
:S/古い文字列/新しい文字列/[1gW]
最初に出現した部分を変更します 古い文字列 変数の値を次のように置き換えます。
新しい文字列。 パターンの最後のスラッシュに「g」が追加されると、
それぞれの単語が置き換えられます。 パターンの最後のスラッシュに「1」が追加された場合のみ、
最初の単語が影響を受けます。 パターンの最後のスラッシュに「W」が追加されている場合、
その場合、値は単一の単語として扱われます (埋め込まれた空白が含まれる可能性があります)。
If 古い文字列 キャレット ('^') で始まり、 古い文字列 の先頭に固定されています
各単語。 もし 古い文字列 ドル記号 ('$') で終わる場合、末尾に固定されます。
各単語。 内部 新しい文字列、アンパサンド (「&」) は次のように置き換えられます。 古い文字列 (なし
任意の「^」または「$」)。 任意の文字を各部分の区切り文字として使用できます。
修飾文字列。 アンカー文字、アンパサンド文字、区切り文字は次のようにエスケープできます。
バックスラッシュ ('\')。
変数の展開は両方の内部で通常の方法で行われます。 古い文字列 新しい文字列
ドルの拡大を防ぐためにバックスラッシュが使用されるという XNUMX つの例外を除きます。
通常のように前にドル記号を付けるのではなく、記号 ('$') を使用します。
:C/パターン/置換/[1gW]
当学校区の :C 修飾子は次のようなものです :S 古い文字列と新しい文字列を除く修飾子、
単純な文字列ではなく、拡張された正規表現です (「 正規表現(3))
string パターン と ed(1) 形式の文字列 置換。 通常、最初の出現は
パターンの パターン 値の各単語は次のように置き換えられます。 置換を選択します。
「1」修飾子を使用すると、置換は最大 XNUMX つの単語に適用されます。 「g」修飾子
置換を検索パターンの同じ数のインスタンスに適用します。 パターン as
それが見つかった単語または複数の単語に出現します。 「W」修飾子により、値は次のようになります。
単一の単語として扱われます (空白が埋め込まれている可能性があります)。 「1」と
「g」は直交です。 前者は、複数の単語が潜在的に含まれるかどうかを指定します。
影響を受けるかどうか、後者はそれぞれの内部で複数の置換が発生する可能性があるかどうかです。
影響を受けた言葉。
用として :S 修飾子、 パターン 置換 変数展開の対象となる
正規表現として解析される前に。
:T 変数内の各単語をその最後のコンポーネントに置き換えます。
:u 隣接する重複した単語を削除します (例: uniq(1))。
:?true_string:false_string
変数名 (値ではない) を .if 条件式として解析すると、
true と評価され、その値として返されます。 true_string、それ以外の場合は、
false_string。 変数名を式として使用しているので、:? 最初でなければなりません
変数名自体の後の修飾子 - もちろん、通常は次の修飾子が含まれます。
変数の展開。 よくあるエラーは、次のような式を使用しようとすることです。
${NUMBERS:M42:?一致:いいえ}
これは実際にdefine(NUMBERS)をテストし、必要な「42」に一致する単語があるかどうかを判断します。
次のようなものを使用します:
${"${NUMBERS:M42}" != "":?一致:いいえ}。
:old_string=新しい_string
これは、AT&T System V UNIX スタイルの変数置換です。 それが最後になるはずです
修飾子が指定されています。 もし 古い文字列 or 新しい文字列 パターンマッチングを含まない
文字 % その場合、それらは各単語の末尾に固定されていると想定されるため、
接尾辞や単語全体を置き換えることもできます。 さもないと % の部分文字列です 古い文字列
に置き換えられる 新しい文字列.
変数の展開は両方の内部で通常の方法で行われます。 古い文字列 新しい文字列
ドルの拡大を防ぐためにバックスラッシュが使用されるという XNUMX つの例外を除きます。
通常のように前にドル記号を付けるのではなく、記号 ('$') を使用します。
:@一時@string@
これは、OSF 開発環境 (ODE) のループ拡張メカニズムです。
取消 。にとって 参照時にループ展開が発生します。 割当 一時 それぞれの言葉に
変数に入れて評価する string。 ODE の規則は次のとおりです。 一時 始めるべきであり、
ピリオドで終わります。 例えば。
${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}
ただし、多くの場合、単一文字変数の方が読みやすいです。
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}
:U新しい
変数が未定義の場合 新しい 値です。 変数が定義されている場合、
既存の値が返されます。 これはもう XNUMX つの ODE make 機能です。 設定に便利です
ターゲットごとの CFLAGS の例:
${_${.TARGET:T}_CFLAGS:U${DEF_CFLAGS}}
変数が未定義の場合にのみ値が必要な場合は、次を使用します。
${VAR:D:Unewval}
:D新しい
変数が定義されている場合 新しい は値です。
:L 変数の名前が値になります。
:P 変数と同じ名前を持つノードのパスが値になります。 そうでない場合
ノードが存在するか、そのパスが null の場合は、変数の名前が使用されます。 のために
この修飾子が機能するには、名前 (ノード) が少なくとも右側に表示されている必要があります。
依存。
:!CMD!
ランニングの成果 CMD は値です。
:NS 変数が空でない場合、コマンドとして実行され、出力は新しいものになります。
の値です。
:: =STR
変数には値が代入されます STR 置換後。 この修飾子とその
バリエーションは、変数を設定したい場合など、あいまいな状況で役立ちます。
シェルコマンドが解析されています。 これらの代入修飾子は常に何も展開されません。
したがって、ルール行に単独で出現する場合は、保持する何かを前に置く必要があります
作る 幸せ。
'::' AT&T System V UNIX スタイルとの誤った一致を回避するのに役立ちます := 修飾子と
置換は常に発生するため、 :: = 形式はなんとなく適当です。
::?=STR
はどうかと言うと :: = ただし、変数に値がまだない場合に限ります。
::+=STR
追加 STR 変数に。
::!=CMD
の出力を割り当てます CMD 変数に。
:[範囲]
値から XNUMX つ以上の単語を選択するか、値に関連する他の操作を実行します。
値を単語に分割する方法。
通常、値は空白で区切られた一連の単語として扱われます。 いくつかの
修飾子はこの動作を抑制し、値が単一の単語として扱われるようにします。
(埋め込まれた空白が含まれる可能性があります)。 空の値、または次の値からなる値
完全に空白で構成されている場合は、単一の単語として扱われます。 の目的のため、:[]'
修飾子を使用すると、単語は正の整数を使用して前方へインデックス付けされます (インデックス 1
最初の単語を表します)、負の整数を使用して逆方向に (インデックス -1 の場合)
は最後の単語を表します)。
当学校区の 範囲 変数展開が行われ、展開された結果が
次のように解釈されます。
index 値から XNUMX つの単語を選択します。
start..end
以下からすべての単語を選択します start 〜へ end、包括的。 例えば、 ':[2..-1]' を選択します
XNUMX番目の単語から最後の単語までのすべての単語。 もし start より大きい end,
その後、単語は逆の順序で出力されます。 例えば、 ':[-1..1]' すべてを選択します
最後から最初までの言葉。
* 後続の修飾子が値を単一の単語として扱うようにします (おそらく
埋め込まれた空白を含みます)。 Bourne の「$*」の効果に似ています。
シェル。
0は「」と同じ意味です:[*]'。
@ 後続の修飾子が値を区切り文字で区切られた一連の単語として扱うようにします。
空白によって。 Bourne シェルの「$@」の効果に似ています。
# 値内の単語数を返します。
インクルード 声明、 条件 そして FOR ループ
C プログラミングを彷彿とさせる Makefile インクルード、条件付き構造、for ループ
言語はで提供されます 作る。 このような構造はすべて、次で始まる行によって識別されます。
単一のドット (「.」) 文字。 ファイルはどちらかに含まれています 。含む ⟨file⟩ または 。含む
"file"。山括弧または二重引用符の間の変数は展開されてファイルを形成します
名前。 山括弧が使用されている場合、含まれているメイクファイルがシステム内にあることが想定されます。
メイクファイルディレクトリ。 二重引用符が使用されている場合、インクルードするメイクファイルのディレクトリと
を使用して指定されたディレクトリ -I オプションは、システムの makefile ディレクトリの前に検索されます。
他のバージョンとの互換性のために 作る 「include file ...」も受け入れられます。
include ステートメントが次のように書かれている場合、 。-含む またはとして .sinclude その後、検索エラーや
インクルード ファイルを開くことは無視されます。
include ステートメントが次のように書かれている場合、 .dinclude エラーが見つかったり開いたりするだけではありません
インクルード ファイルは無視されますが、インクルード ファイル内の古い依存関係は無視されます。
ような .Make.dependfile.
条件式の前には、行の最初の文字として XNUMX つのドットが付きます。
可能な条件は次のとおりです。
。エラー メッセージ
メッセージがメイクファイルの名前と行番号とともに出力されます。
作る 終了します。
。輸出 変数 ...
指定されたグローバル変数をエクスポートします。 変数リストが指定されていない場合は、すべてのグローバル
内部変数 (「.」で始まる変数) を除いてエクスポートされます。 これではありません
の影響を受ける -X フラグがあるため、使用には注意が必要です。 との互換性のため
その他 作る プログラム「export variable=value」も受け入れられます。
変数名を追加する .Make.Exported 変数をエクスポートすることと同じです。
.export-env 変数 ...
変数が追加されないことを除いて、「.export」と同じです。 .Make.Exported.
これにより、使用されている値とは異なる値を環境にエクスポートできます。
by 作る 内部的に。
.export-リテラル 変数 ...
値内の変数が展開されないことを除いて、「.export-env」と同じです。
。情報 メッセージ
メッセージは、メイクファイルの名前と行番号とともに出力されます。
.undef 変数
指定されたグローバル変数の定義を解除します。 未定義にできるのはグローバル変数のみです。
.unexport 変数 ...
「.export」の反対。 指定されたグローバル 変数 から削除されます
.Make.Exported。 変数リストが指定されていない場合、すべてのグローバルがアンエクスポートされ、
.Make.Exported 削除されました。
.unexport-env
以前にエクスポートされたすべてのグローバルをアンエクスポートし、から継承された環境をクリアします。
親。 この操作は元の環境のメモリリークを引き起こすため、
慎重に使用する必要があります。 テスト中 .メイクレベル 0 であることは理にかなっています。 また
親環境で発生した変数はすべて、
必要に応じて明示的に保存されます。 例えば:
.if ${.MAKE.LEVEL} == 0
パス := ${パス}
.unexport-env
.export パス
。ENDIF
最小限の有用な「PATH」のみを含む環境が作成されます。
環境。 実際には「.MAKE.LEVEL」も新しい環境にプッシュされます。
。警告 メッセージ
' という接頭辞が付いたメッセージ警告:' がメイクファイルの名前とともに出力されます。
そして行番号。
。もしも [!]表現 [オペレータ 表現 ...]
式の値をテストします。
.ifdef [!]変数 [オペレータ 変数 ...]
変数の値をテストします。
.ifndef [!]変数 [オペレータ 変数 ...]
変数の値をテストします。
.ifmake [!]ターゲット [オペレータ ターゲット ...]
構築中のターゲットをテストします。
.ifnmake [!] ターゲット [オペレータ ターゲット ...]
構築中のターゲットをテストします。
。それ以外 最後の条件文の意味を逆にします。
.elif [!] 表現 [オペレータ 表現 ...]
の組み合わせ。それ以外' に続く '。もしも'。
.elifdef [!]変数 [オペレータ 変数 ...]
の組み合わせ。それ以外' に続く '.ifdef'。
.elifndef [!]変数 [オペレータ 変数 ...]
の組み合わせ。それ以外' に続く '.ifndef'。
.elifmake [!]ターゲット [オペレータ ターゲット ...]
の組み合わせ。それ以外' に続く '.ifmake'。
.elifnmake [!]ターゲット [オペレータ ターゲット ...]
の組み合わせ。それ以外' に続く '.ifnmake'。
。ENDIF 条件文の本体を終了します。
当学校区の オペレータ 次のいずれかになります。
|| 論理和。
&& 論理積。 「||」よりも優先順位が高くなります。
C のように、 作る 条件を決定するために必要な場合にのみ条件を評価します。
価値。 括弧を使用して評価の順序を変更できます。 ブール演算子 '!'
条件全体を論理的に否定するために使用できます。 よりも優先順位が高くなります
'&&'。
の値 表現 次のいずれかになります。
定義済みの 変数名を引数として受け取り、変数が次の場合に true と評価されます。
定義された。
make ターゲット名を引数として受け取り、ターゲットが次の場合に true と評価します。
~の一部として指定される 作るのコマンドライン、またはデフォルトのターゲットとして宣言されました
(暗黙的または明示的に、を参照してください。 。主要) を含む行の前
条件付き。
空の 可能な修飾子を含む変数を受け取り、展開された場合に true と評価します。
変数を指定すると空の文字列になります。
存在 ファイル名を引数として受け取り、ファイルが存在する場合は true と評価されます。 の
ファイルはシステム検索パス上で検索されます (「 。パス).
ターゲット ターゲット名を引数として受け取り、ターゲットが既に指定されている場合は true と評価されます。
定義された。
コマンド
ターゲット名を引数として受け取り、ターゲットが既に指定されている場合は true と評価されます。
定義されており、それに関連付けられたコマンドがあります。
表現 算術比較または文字列比較の場合もあります。 変数展開が行われる
比較の両側で、その後整数値が比較されます。 値は
先頭に 0x が付いている場合は XNUMX 進数として解釈され、それ以外の場合は XNUMX 進数として解釈されます。 XNUMX 進数
はサポートされていません。 標準の C 関係演算子はすべてサポートされています。 後なら
変数の展開 (' の左側または右側)=='または'!=' 演算子は
整数値の場合、展開された変数間で文字列比較が実行されます。 いいえの場合
関係演算子が指定されている場合、展開された変数が比較されていると想定されます。
文字列比較の場合は 0 または空の文字列と比較します。
日時 作る これらの条件式の XNUMX つを評価しているときに、(white-
スペースで区切る)認識できない単語。「make」または「define」式のいずれかが
条件式の形式に応じて適用されます。 フォームが「」の場合.ifdef'、
'.ifndef'、 また '。もしも' 「定義された」式が適用されます。 同様に、フォームが
'.ifmake'または'.ifnmake, '「make」表現が適用されます。
条件が true と評価された場合、メイクファイルの解析は以前と同様に続行されます。 それであれば
false と評価されると、次の行はスキップされます。 どちらの場合も、これは次の時点まで続きます。
'。それ以外'または'。ENDIF' 見つかった。
通常、for ループは、一連のルールをファイルのリストに適用するために使用されます。 の構文
for ループは次のとおりです。
。にとって 変数 [変数 ...] in 表現
⟨ルール作り⟩
.endfor
forの後 表現 評価されると単語に分割されます。 を繰り返すたびに、
ループでは、XNUMX つの単語が取得され、それぞれに割り当てられます。 変数、順番に、そしてこれら variables
に置き換えられます 規則を作る for ループの本体内。 単語数は
さえ出てくる。 つまり、反復変数が XNUMX つある場合、提供される単語の数は
XNUMX の倍数でなければなりません。
コメント
コメントは、シェル コマンド ライン以外の場所ではハッシュ ('#') 文字で始まります。
エスケープされていない新しい行の末尾まで続けます。
特殊 SOURCES (属性)
.EXEC ターゲットが古くなることはありませんが、とにかく常にコマンドを実行します。
。無視 このターゲットに関連付けられたコマンドからのエラーを無視します。
すべての前にダッシュ ('-') が付きます。
。作った このターゲットのすべてのソースを最新としてマークします。
。作る たとえ -n or -t オプションは
指定された。 通常、再帰をマークするために使用されます 作るs.
.META フラグが立てられている場合でも、ターゲットのメタ ファイルを作成します。 .PHONY, 。作るまたは
。特別。 と組み合わせて使用する 。作る 最も可能性の高いケースです。 「メタ」では
モードでは、メタファイルが見つからない場合、ターゲットは最新ではありません。
.NOMETA ターゲットのメタファイルを作成しないでください。 メタファイルも作成されません
.PHONY, 。作るまたは 。特別 ターゲット。
.NOMETA_CMP
ターゲットが古いかどうかを判断するときは、コマンドの違いを無視します。 これは
コマンドに常に変化する値が含まれている場合に便利です。 の数であれば、
ただし、コマンドは変更されますが、ターゲットは依然として古いままです。 同じ効果
変数を使用するすべてのコマンドラインに適用されます .OODATE、に使用できます
たとえそれが必要でなくても、望まれていなくても、その目的は次のとおりです。
一部の比較をスキップ:
@echo これは比較されます
@echo これは ${.OODATE:M.NOMETA_CMP} にはなりません
@echo これも比較されます
当学校区の :M pattern は、不要な変数の展開を抑制します。
.NOPATH で指定されたディレクトリ内でターゲットを検索しません。 。パス.
.NOTMAIN 通常は 作る 最初に遭遇したターゲットをデフォルトのターゲットとして選択します。
ターゲットが指定されていない場合にビルドされます。 このソースにより、このターゲットは
選択された。
.オプション
ターゲットがこの属性でマークされている場合、 作る 作成方法がわかりません
その場合、この事実は無視され、ファイルは不要であるか、すでに存在すると想定されます。
.PHONY ターゲットは実際のファイルに対応しません。 それは常にそう見なされます
期限切れのため、 -t オプション。 接尾語変換
ルールは適用されません .PHONY ターゲット。
。貴重
日時 作る が中断されると、通常は部分的に作成されたターゲットがすべて削除されます。 これ
ソースがターゲットの削除を妨げます。
.Recursive
の同義語 。作る.
。静けさ このターゲットに関連付けられたコマンドを、あたかもエコーするかのようにエコーしないでください。
すべての前にアットマーク (「@」) が付いていました。
。使用 ターゲットを次のように変える 作るのマクロのバージョン。 ターゲットとして使用する場合
別のターゲットのソースを取得すると、他のターゲットはコマンド、ソース、および
属性(を除く) 。使用)ソースの。 ターゲットにすでにコマンドがある場合、
。使用 ターゲットのコマンドがそれらに追加されます。
.USEBEFORE
まさにそのように 。使用、ただし、先頭に追加します .USEBEFORE target コマンドをターゲットに送信します。
。待って If 。待って が依存関係行にある場合、その前にあるソースは以前に作成されます。
その行に続くソース。 ファイルの依存関係は存在しないため、
ファイル自体が作成できるようになるまで作成されます。これにより、依存ファイルの作成も停止されます。
依存関係ツリーの別のブランチに必要でない限り、ビルドされます。 したがって、次のように与えられます。
x: a .WAIT b
エコー×
a:
エコーする
b: b1
エコーb
b1:
エコーb1
出力は常に「a」、「b1」、「b」、「x」です。
によって課される順序付け 。待って 並行メーカーにのみ関係します。
特殊 ターゲット
特別なターゲットは他のターゲットと一緒に含めることはできません。つまり、特別なターゲットが唯一のターゲットである必要があります。
指定。
。始める このターゲットにアタッチされたコマンド ラインは、他のコマンドが実行される前に実行されます。
行います。
。ディフォルト
これはある種のことです 。使用 ターゲット (ソースとしてのみ使用される) に対するルール。
作る 他に作成方法が思いつきません。 シェルスクリプトのみが使用されます。
当学校区の .IMPSRC 継承するターゲットの変数 。ディフォルトのコマンドは、
ターゲット自身の名前。
。終わり このターゲットにアタッチされたコマンド ラインは、他のすべてが完了した後に実行されます。
行います。
。エラー このターゲットにアタッチされたコマンド ラインは、別のターゲットが失敗したときに実行されます。
当学校区の .ERROR_TARGET 変数は失敗したターゲットに設定されます。 こちらも参照
MAKE_PRINT_VAR_ON_ERROR.
。無視 各ソースにマークを付けます。 。無視 属性。 ソースが指定されていない場合は、
これは、 -i オプションを選択します。
。割り込み
If 作る が中断されると、このターゲットのコマンドが実行されます。
。主要 ターゲットが指定されていない場合 作る が呼び出されると、このターゲットがビルドされます。
.MakeFLAGS
このターゲットは、次のフラグを指定する方法を提供します。 作る メイクファイルを使用する場合。
フラグはシェルに入力されたかのように見えますが、 -f オプションは効果がありません。
.NOPATH 適用 .NOPATH 指定されたソースへの属性。
.NOTPARALLEL
パラレルモードを無効にします。
.NO_PARALLEL
の同義語 .NOTPARALLEL、他の pmake バリアントとの互換性のため。
.OBJDIR ソースは ' の新しい値です.OBJDIR'。 存在する場合、 作る 意志 Chdir(2)それに
' の値を更新します.OBJDIR'。
。注文 名前付きターゲットは順番に作成されます。 この順序ではターゲットは追加されません。
作成するターゲットのリスト。 ターゲットの依存関係は構築されないため、
'a' がターゲットの別の部分によってビルドされない限り、ターゲット自体がビルドされるまで
依存関係グラフ。以下は依存関係ループです。
.ORDER: バ
b:a
によって課される順序付け 。注文 並行メーカーにのみ関係します。
。パス ソースは、ディレクトリ内に見つからないファイルを検索するディレクトリです。
カレントディレクトリ。 ソースが指定されていない場合は、以前に指定されたソース
ディレクトリが削除されます。 ソースが特殊な場合 .ドットラスト ターゲット、次に
現在の作業ディレクトリが最後に検索されます。
。パス。サフィックス
いいね 。パス ただし、特定の接尾辞を持つファイルにのみ適用されます。 接尾辞は次のとおりです。
以前に宣言されている 。接尾辞.
.PHONY 適用 .PHONY 指定されたソースへの属性。
。貴重
適用 。貴重 指定されたソースへの属性。 ソースがない場合は、
指定、 。貴重 属性はファイル内のすべてのターゲットに適用されます。
。シェル シェルを設定します。 作る コマンドを実行するために使用されます。 ソースは一連のものです
field = value
名 これは最小限の仕様であり、組み込みのいずれかを選択するために使用されます。
シェルの仕様。 sh, kshの, CSH.
path シェルへのパスを指定します。
hasErrCtl シェルがエラー時の終了をサポートするかどうかを示します。
PowerSchoolで、緊急連絡先情報を定期的にチェックし、 エラーチェックをオンにするコマンド。
無視する エラーチェックを無効にするコマンド。
echo 実行されたコマンドのエコーをオンにするコマンド。
静かな 実行されたコマンドのエコーをオフにするコマンド。
filter 発行後にフィルタリングする出力 静かな 指示。 典型的には
と同じ 静かな.
エラーフラグ エラーチェックを有効にするためにシェルに渡すフラグ。
エコーフラグ コマンドのエコーを有効にするためにシェルに渡すフラグ。
改行 単一の改行となるシェルに渡す文字列リテラル
引用文字の外側で使用される場合の文字。
例:
.SHELL: 名前=ksh パス=/bin/ksh hasErrCtl=true \
check="set -e"ignore="set +e" \
echo="set -v" Quiet="set +v" filter="set +v" \
echoFlag=v errFlag=e newline="'\n'"
。静けさ 適用 。静けさ 指定されたソースへの属性。 ソースが指定されていない場合は、
。静けさ 属性はファイル内のすべてのコマンドに適用されます。
.STALE このターゲットは、依存関係ファイルに古いエントリが含まれている場合に実行されます。 .ALLSRC
その依存関係ファイルの名前に設定されます。
。接尾辞
各ソースは接尾辞を指定します。 作る。 ソースが指定されていない場合は、
以前に指定したサフィックスは削除されます。 これにより、サフィックスの作成が可能になります。
変換ルール。
例:
.サフィックス: .o
.co:
cc -o ${.TARGET} -c ${.IMPSRC}
ENVIRONMENT
作る 次の環境変数が存在する場合は、それを使用します: MACHINE、MACHINE_ARCH、
MACHINE_MULTIARCH、MAKE、MAKEFLAGS、MAKEOBJDIR、MAKEOBJDIRPREFIX、MAKESYSPATH、PWD、および
TMPDIR。
MAKEOBJDIRPREFIX および MAKEOBJDIR は、環境またはコマンド ラインでのみ設定できます。
作る Makefile 変数としてではありません。 の説明を参照してください。.OBJDIR' 詳細については。
onworks.net サービスを使用してオンラインで pmake を使用する