🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: ca.test
Article #9282

test-ignore

#9282
From: test3
Date: Fri, 27 Oct 1995 00:00
303 lines
31844 bytes


NMAKE.WRI ファむル
Microsoft(R) Visual C++, バヌゞョン 1.5 の NMAKE ナヌティリティの解説
(C) Copyright Microsoft Corporation, 1995


NMAKE によるプロゞェクトの管理
ここでは、Microsoft Program Maintenance ナヌティリティ (NMAKE) に぀いお説明したす。NMAKE は、プロゞェクト管理にかかる時間を短瞮し簡玠化する高床なコマンド プロセッサです。プロゞェクトを構成しおいるファむルの䟝存関係を指定しおおくこずにより、前回のビルドから倉曎のあったファむルだけを再コンパむルしお
、プロゞェクトを自動的にビルドしたす。
プロゞェクトのビルドに Visual Workbench を䜿っおいるずき、Visual Workbench は自動的にメむクファむルを䜜り、Visual Workbench 自身がプロゞェクトを管理したす。Visual Workbench を䜿わずにプログラムをビルドするずきや、すでにあるメむクファむルの内容を理解したり修正するずき、たたは倖郚プロゞェクトを䜿う
きには、このファむルを参照しおください。
このバヌゞョンの NMAKE は、32 ビット MS-DOS 察応の拡匵プログラムであるため、プロテクト モヌドで動䜜する 80386 たたはそれ以䞊の CPU が必芁です。たた、DOSXNT.EXE が NMAKE ず同じディレクトリか、パスの通ったディレクトリに存圚しなければなりたせん。Microsoft Windows 䞊で NMAKE を䜿うずきは、SYSTEM.INI 
 [386Enh] セクションで DOSXNT.386 が DEVICE 文で指定されおいなければいけたせん。
新しい特城
このバヌゞョンの NMAKE には、次のような新しい特城がありたす。

■	新芏オプション : /B, /K。
■	.SUFFIXES のリストに .CPP ず .CXX が远加されたした。
■	C++ プログラム甚の組蟌みマクロ : CPP, CXX, CPPFLAGS, CXXFLAGS
■	C++ プログラム甚のあらかじめ定矩されおいる掚論芏則 
■	!MESSAGE ディレクティブ
■	2 ぀のプリプロセッサ挔算子 : DEFINED, EXIST
■	!ELSE ディレクティブで䜿われる 3 ぀のキヌワヌド : IF, IFDEF, IFNDEF
■	新芏ディレクティブ : !ELSEIF, !ELSEIFDEF, !ELSEIFNDEF)
NMAKE の抂芁
NMAKE は、ファむルの最終倉曎日時を瀺す“タむム スタンプ”をもずに凊理を行いたす。倚くのオペレヌティング システムでは、2 秒間隔でタむム スタンプを蚭定しおいたす。NMAKE は、“タヌゲット”ファむルず“䟝存”ファむルのタむム スタンプを比范したす。タヌゲット ファむルずは、通垞、実行可胜ファむルなど、こ
黷ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ ファむルなどタヌゲットを䜜るもずずなるファむルです。タヌゲット ファむルよりもあずに䟝存ファむルが倉曎されたずきや、タヌゲット ファむルが存圚しないずきは、そのタヌゲットは曎新が
必芁になりたす。(タむム スタンプが 2 秒間隔で割り圓おられるこずによっお発生する、ビルドぞの圱響に぀いおは、 /B オプションの項を参照しおください。)

泚意 :	NMAKE を正しく動䜜させるため、以前の蚭定ず矛盟がないようにシステムの日付ず時刻を蚭定しおください。システムを起動させるたびに日付ず時間を蚭定するずきは、正確に蚭定するよう泚意しおください。システムが蚭定を蚘憶しおいるずきは、メモリ バック アップ甚電池が動䜜しおいるこずを確認しおください。

NMAKE は、メむクファむルで定矩された呜什にしたがっお凊理を行いたす。NMAKE を実行するず、“メむクファむル”が読み蟌たれたす。メむクファむル (蚘述ファむルずも呌ばれたす) は、さたざたな呜什で構成されるテキスト ファむルです。NMAKE はこの呜什を䜿っお、プロゞェクトをビルドしたす。呜什は、蚘述ブロック、ヮ
}クロ、ディレクティブ、掚論芏則で構成されたす。通垞、各蚘述ブロックには、タヌゲットずその䟝存ファむル、タヌゲットをビルドするためのコマンドが蚘述されたす。NMAKE は、タヌゲットのタむム スタンプず、䟝存ファむルのタむム スタンプを比范したす。タヌゲットの最終倉曎日時以降に䟝存ファむルが倉曎されおいる
き、NMAKE は、蚘述ブロックに瀺されおいるコマンドを実行し、タヌゲットを曎新したす。
メむクファむルがないずきでも NMAKE を実行するこずができたす。NMAKE は、メむクファむルが存圚しなければ、コマンド ラむンたたは TOOLS.INI から受け取った呜什ずずもに、組蟌みマクロや掚論芏則にしたがっおタヌゲットをビルドしようずしたす。
NMAKE の䞻な目的は、早く簡単にプログラムをビルドするこずにありたす。しかしそれだけでなく、NMAKE はほかのプログラムを起動したり、オペレヌティング システムのコマンドも実行できるので、コンパむルやリンクに限らず、ほかの目的にも䜿うこずができたす。NMAKE は、バックアップの䜜成やファむルの移動などに、た
通垞はオペレヌティング システムのプロンプトで行っおいるようなプロゞェクト管理などにも䜿うこずができたす。
このファむルでは、タヌゲットを構築するこずを“ビルド”ず呌んでいたすが、これはタヌゲットず䟝存ファむルのタむム スタンプを比范し、タヌゲットの最終倉曎日時が叀いずきに、そのタヌゲットを構築するためのコマンドを実行するこずを指したす。“ビルド”ずいう甚語は、タヌゲットが実際に生成されたかどうかにかか
墲蜀ᅵᅵ
NMAKE の実行
NMAKE を起動するずきは、次のような構文を䜿いたす。

NMAKE 【options】 【macros】 【targets】

options フィヌルドには、NMAKE のオプションを指定したす。NMAKE のオプションに぀いおは、「コマンドラむン オプション」を参照しおください。
macros フィヌルドには、メむクファむルのテキストを倉曎するためのマクロ定矩を指定したす。マクロの構文に぀いおは、「ナヌザヌ定矩マクロ」を参照しおください。
targets フィヌルドには、ビルドするタヌゲットを指定したす。コマンド ラむンで指定されたタヌゲットだけがビルドされたす。タヌゲットを指定しなければ、メむクファむルの䞭の最初の䟝存関係行で 1 番目に指定されおいるタヌゲットだけがビルドされたす (疑䌌タヌゲットを䜿っお、1 ぀以䞊のタヌゲットをビルドできたす
。詳しくは、「疑䌌タヌゲット」の項を参照しおください。)
NMAKE によるビルド凊理は、次に瀺す優先順䜍にしたがっお進められたす。

1.	/F オプションを指定したずき、NMAKE は指定されたメむクファむルをカレント ディレクトリたたは指定されたディレクトリで探したす。ファむルが芋぀からないず、NMAKE は凊理を䞭止しお゚ラヌ メッセヌゞを衚瀺したす。
2.	/F オプションを指定しないずきは、NMAKE はファむル名が“MAKEFILE”ずいうメむクファむルをカレント ディレクトリで探したす。
3.	MAKEFILE が芋぀からないずきには、NMAKE はコマンド ラむンで指定されたタヌゲット ファむルを調べ、掚論芏則 (TOOLS.INI で定矩されおいるもの、たたはあらかじめ定矩されおいる掚論芏則) を䜿っおビルドを詊みたす。このため、そのタヌゲットに察しお適甚できる掚論芏則があれば、メむクファむルなしで NMAKE を䜿
こずもできたす。
4.	メむクファむルがなく、コマンド ラむンにタヌゲット ファむルの指定もされおいなければ、NMAKE は凊理を䞭断しお、゚ラヌ メッセヌゞを衚瀺したす。

䟋
次に瀺すコマンドでは、オプション (/S)、マクロ定矩 ("program=sample") を指定しお、2 ぀のタヌゲット (sort.exe ず search.exe) をビルドするように NMAKE に指瀺しおいたす。この䟋では、メむクファむルを指定しおいないので、NMAKE は MAKEFILE を探すか、たたは掚論芏則を䜿っおビルドしたす。

NMAKE /S "program=sample" sort.exe search.exe

コマンドラむン オプション
NMAKE の凊理を制埡するために、いく぀かのオプションがサポヌトされおいたす。オプションは倧文字でも小文字でも指定できたす。たた、指定するずきには、オプション名の前にスラッシュ (/) たたはマむナス蚘号 (-) のどちらかを付けおください。
メむクファむルや TOOLS.INI ファむルの䞭で指定できるオプションもありたす。TOOLS.INI に぀いお詳しくは、このファむルの「TOOLS.INI ファむル」を参照しおください。!CMDSWITCHES ディレクティブを䜿ったオプションの指定に぀いおは、「プリプロセス ディレクティブ」を参照しおください。

/A
	タヌゲット ファむルのタむムスタンプが各䟝存ファむルに察しお新しい堎合でも、評䟡されたすべおのタヌゲットをビルドしたす。このオプションは、関係のないタヌゲットはビルドしたせん。
/B
	タむム スタンプが同じでも、䟝存関係行を実行したす。倚くのオペレヌティング システムでは、ファむルにタむム スタンプを付けるずきに、2 秒の間隔を眮いお行いたす。コマンドの実行が速いず、NMAKE は実際には叀いファむルでも、曎新の必芁がないず刀断するこずがありたす。このオプションを指定するず、必芁倖のビル
ドが行われる可胜性もありたすが、高速なマシン䞊で NMAKE を䜿っおいるずきには指定するこずをおすすめしたす。
/C
	臎呜的でない゚ラヌや譊告メッセヌゞ、タむム スタンプ、NMAKE 起動時の開始メッセヌゞを衚瀺しないようにしたす。/C ず同時に /K が指定されおいるずきは、/K によっお発行される譊告メッセヌゞも衚瀺したせん。
/D
	NMAKE 実行䞭に情報の衚瀺を行いたす。情報は、NMAKE のデフォルト出力に間隔を眮いお衚瀺されたす。NMAKE は、ビルド凊理䞭に評䟡された各タヌゲットず䟝存ファむルのタむム スタンプず、タヌゲットが存圚しないずきはメッセヌゞを衚瀺したす。䟝存ファむルは、そのタヌゲット ファむルの前にむンデントされお衚瀺され
す。/D ず /P オプションは、メむクファむルのデバッグに䟿利です。
	メむクファむル䞭で郚分的に /D を蚭定たたは解陀するには、!CMDSWITCHES ディレクティブを䜿いたす。詳しくは、「プリプロセス ディレクティブ」を参照しおください。
/E
	メむクファむルのマクロ定矩よりも環境倉数が優先されたす。「マクロ」を参照しおください。
/F filename
	filename にメむクファむル名を指定したす。filename の前には、スペヌスたたはタブを入れるこずができたす。ファむル名のかわりにハむフン (-) を指定するず、NMAKE は暙準入力デバむスからの入力をメむクファむルの入力ずしお読み蟌みたす (入力を終了するには、[F6] キヌたたは [Ctrl]+[Z] キヌを䜿いたす)。NMAKE は
耇数のメむクファむルを読み蟌むこずができたす。耇数指定するずきには、各メむクファむルごずに /F オプションを指定したす。
	/F オプションを省略するず、NMAKE はカレント ディレクトリで MAKEFILE (拡匵子なし) ずいう名前のファむルを探し、それをメむクファむルずしお䜿いたす。MAKEFILE が芋぀からなければ、NMAKE は掚論芏則を䜿っおコマンド ラむンで指定されたタヌゲット ファむルをビルドしたす。
/HELP
	NMAKE のコマンド ラむン構文の芁玄を衚瀺したす。
/I
	メむクファむルに曞かれおいるすべおのコマンドからの終了コヌドを無芖したす。゚ラヌが発生しおも、NMAKE はメむクファむルの終わりたで凊理を行いたす。メむクファむルの䞭で郚分的に終了コヌドを無芖するには、ハむフン (-) コマンド修正子たたは .IGNORE ディレクティブを䜿いたす。それぞれ、このファむルの「コマヮ
塔h修正子」ず「ドット ディレクティブ」を参照しおください。メむクファむル䞭で郚分的に、/I を蚭定たたは解陀するには、!CMDSWITCHES ディレクティブを䜿いたす。このファむルの「 プリプロセス ディレクティブ」を参照しおください。ビルドに関係ないずころでの゚ラヌを無芖するには、/K オプションを䜿いたす。䞡方詊
w定されたずきには、/I が /K に優先したす。
/K
	゚ラヌでコマンドが停止したずきに、䟝存ツリヌに関係ない郚分に察するビルドを継続しお行いたす。デフォルトでは、NMAKE はコマンドから 0 以倖の終了コヌドが返されるず実行を䞭断したす。このオプションが指定されおいるず、コマンドから 0 以倖の終了コヌドが返されたずきに、NMAKE はそのコマンドを含むブロックの詊
行を䞭断したす。NMAKE はそのコマンドを必芁ずしおいるタヌゲットのビルドをせずに、譊告メッセヌゞを衚瀺しおほかのタヌゲットをビルドしたす。/K が指定されおいるずきに、ビルドが完了しないず、NMAKE は終了コヌド 1 を返したす。この点は、/I オプションず異なりたす。/I オプションはすべおの終了コヌドを無芖し
す。䞡方指定されたずきには、/I が /K に優先したす。/C オプションを指定するず、/K で発行される譊告メッセヌゞの衚瀺を犁止したす。
/N
	メむクファむルのビルド時に実行されるコマンドを衚瀺するだけで、実行はしたせん。プリプロセス コマンドは実行されたす。メむクファむルのデバッグや曎新すべき叀いタヌゲット ファむルをチェックするのに䟿利なオプションです。メむクファむル䞭で郚分的に /N を蚭定たたは解陀するずきには、!CMDSWITCHES ディレクテ
ィブを䜿いたす。「18.9.2  プリプロセス ディレクティブ」を参照しおください。
/NOLOGO
	NMAKE 起動時の開始メッセヌゞを衚瀺しないようにしたす。
/P
	すべおのマクロ定矩、掚論芏則、タヌゲット ファむルの蚘述、および .SUFFIXES ディレクティブのリストを、NMAKE の実行を開始する前に暙準出力デバむスに衚瀺したす。メむクファむル、たたはコマンドラむンでタヌゲットを指定しないで /P を指定するず、NMAKE はこれらの情報ず゚ラヌを衚瀺したす。/P ず /D オプション
は、メむクファむルのデバッグをするずきに䟿利です。
/Q
	ビルドによっお曎新する必芁があるタヌゲット ファむルのタむム スタンプをチェックしたす。ただし、ビルドは行いたせん。タヌゲットがすべお曎新されおいれば NMAKE は 0 を返し、曎新が必芁なタヌゲットがあれば 0 以倖の数を返したす。メむクファむルのプリプロセス コマンドだけが実行されたす。NMAKE をバッチ ファ
むルから実行するずきに䟿利なオプションです。
/R
	.SUFFIXES のリストを解陀しお、掚論芏則、TOOLS.INI で定矩されおいるマクロたたは組蟌みマクロを無芖したす。
/S
	メむクファむルに曞かれおいるコマンドを衚瀺しないようにしたす。メむクファむル䞭で郚分的にコマンド衚瀺を犁止するには、@ コマンド修正子たたは .SILENT ディレクティブを䜿いたす。それぞれ、このファむルの「コマンド修正子」、「ドット ディレクティブ」を参照しおください。メむクファむル䞭で郚分的に /S を蚭虫
閧ᅵᅵᅵ!CMDSWITCHES ディレクティブを䜿いたす。このファむルの「プリプロセス ディレクティブ」を参照しおください。
/T
	コマンド ラむンで指定されたタヌゲット (たたはタヌゲットが指定されなければメむクファむル䞭の最初のタヌゲット) のタむム スタンプを珟圚の時間に倉曎したす。メむクファむルのプリプロセス コマンドが実行され、ビルドは行われたせん。タヌゲットの内容は倉曎されたせん。
/X filename
	すべおの゚ラヌ出力 (NMAKE および実行されたコマンドからのもの) を filename ぞ出力したす。filename には、ファむルたたはデバむスを指定できたす。filename の前には、スペヌスたたはタブを入れるこずができたす。ファむル名のかわりにハむフン (-) を指定するず、゚ラヌ出力は暙準出力デバむスぞ送られたす。デフォ
ルトでは、NMAKE ぱラヌを暙準゚ラヌに送りたす。
/?
	NMAKE のコマンドラむンの構文の芁玄を衚瀺しお NMAKE を終了し、オペレヌティング システムぞ戻りたす。
䟋
次の䟋では、2 ぀の NMAKE オプションを指定しおいたす。

NMAKE /F sample.mak /C targ1 targ2

/F オプションにより NMAKE は、メむクファむル SAMPLE.MAK を読み蟌みたす。/C オプションにより NMAKE は、臎呜的でない゚ラヌや譊告メッセヌゞを衚瀺しないようにしたす。曎新するタヌゲット ファむルずしお targ1 ず targ2 の 2 ぀を指定しおいたす。
NMAKE コマンド ファむル
同じコマンドラむンの匕数を繰り返し䜿うようなずき、匕数をテキスト ファむルに蚘述しおおき、そのファむル名をコマンド ラむンの匕数ずしお NMAKE に枡すこずができたす。NMAKE はそのコマンド ファむルをオヌプンしお、匕数を読み蟌みたす。この機胜は、匕数のリストがオペレヌティング システムのコマンド ラむンの最
倧長 (MS-DOS では 128 文字) を超えるようなずきに、特に有効です。
NMAKE のコマンド ラむンでコマンド ファむルを指定するずきは、次の構文を䜿いたす。

NMAKE @commandfile

commandfile フィヌルドには、NMAKE のコマンド ラむンに入力する情報が蚘述されたテキスト ファむルの名前を入力したす。コマンド ファむルの名前の前にアット マヌク (@) を付けお指定しおください。たた、ファむル名はディレクトリ パスを付けお指定できたす。
NMAKE は、指定されたファむルを 1 ぀のコマンドラむン匕数ずしお扱いたす。NMAKE は、ファむルの䞭の各行の改行をスペヌスに眮き換えたす。したがっお、マクロ定矩がスペヌスを含んでいるずきには、クォヌテヌション マヌクで囲む必芁がありたす。このファむルの「マクロを定矩する堎所」の項を参照しおください。
コマンド ラむンの指定ずコマンド ファむルの指定ずは、分けお入力できたす。コマンド ラむンの必芁な箇所で、@commandfile を指定しおください。コマンドラむン入力は、コマンド ファむルの指定した箇所の前埌で行うこずができたす。コマンド ファむルは耇数指定できたす。

䟋 1
この䟋では、次に瀺すような内容を持぀ファむル UPDATE を䜿っおいたす。

/S "program = sample" sort.exe search.exe

次のように指定するず、NMAKE はコマンド ラむンの匕数を UPDATE から読み蟌みたす。

NMAKE @update

この䟋の結果は、次のように盎接コマンドラむン匕数を入力したずきず同じになりたす。

NMAKE /S "program = sample" sort.exe search.exe

䟋 2
この䟋では、次に瀺すような内容を持぀ファむル UPDATE を䜿っおいたす。

/S "program \
= sample" sort.exe search.exe

円蚘号 (\) を䜿うず、マクロ定矩を次の行に続けお曞くこずができたす。

䟋 3
この䟋では、次に瀺すような内容を持぀ファむル UPDATE を䜿っおいたす。

/S "program = sample" sort.exe

次のように指定するず、NMAKE はコマンド ラむンの匕数を UPDATE から読み蟌みたす。

NMAKE @update search.exe

TOOLS.INI ファむル
よく䜿う情報を初期化ファむル TOOLS.INI に曞き蟌んで、NMAKE をカスタマむズするこずができたす。NMAKE の蚭定は、タグ [NMAKE] で始たる行のあずに曞きたす。タグは倧文字小文字の区別がありたせん。初期化ファむルのこのタグの郚分に、メむクファむルの情報を曞き蟌みたす。NMAKE は、/R オプションを指定しお起動し
ずき以倖は、すべおのセッションでこの情報を䜿いたす。NMAKE は、最初にカレント ディレクトリで TOOLS.INI を探し、芋぀からないずきは環境倉数 INIT に指定されおいるディレクトリで探したす。
!CMDSWITCHES ディレクティブを䜿っお、TOOLS.INI でコマンドラむン オプションを指定できたす。この方法で指定したオプションは、すべおの NMAKE セッションで有効です。この方法は、ほかのナヌティリティでもサポヌトされおいる環境倉数からオプションを受け取る方法ず同じ効果がありたす。!CMDSWITCHES に぀いお詳しく
は、このファむルの「プリプロセス ディレクティブ」を参照しおください。
TOOLS.INI ファむルに蚘述されおいるマクロず掚論芏則は、倉曎するこずができたす。このファむルの「マクロ定矩の優先順䜍」ず「掚論芏則の優先順䜍」を参照しおください。
NMAKE は、最初に TOOLS.INI からの情報を読み蟌み、次にメむクファむルの情報を読み蟌みたす。したがっお、たずえば TOOLS.INI の䞭の蚘述ブロックは、メむクファむルの蚘述ブロックの先頭郚分ずしお扱われたす。/R が指定されおいないかぎり、すべおの NMAKE セッションでこのように動䜜したす。
TOOLS.INI ファむル内でコメントを蚘述するずきには、行の先頭をセミコロン (;) で始めおください。たた、メむクファむルず同じようにシャヌプ蚘号 (#) のあずにコメントを蚘述するこずもできたす。詳しくは、このファむルの「コメント」を参照しおください。

䟋
次に、TOOLS.INI ファむルの蚘述䟋を瀺したす。

[NMAKE]
; macros
CC     = qcl
CFLAGS = /Gc /Gs /W3 /Oat
; inference rule
c.obj:
	$(CC) /Zi /c $(CFLAGS) $*.c

TOOLS.INI に䞊に瀺したコヌドがあるず、NMAKE は [NMAKE] のあずの行を読みたす。この䟋では、Microsoft QuickC コンパむラ (QCL.EXE) を起動するためにマクロ CC を再定矩し、マクロ CFLAGS を定矩し、そしお .C ゜ヌスから .OBJ ファむルを䜜るための掚論芏則を再定矩しおいたす。これらの NMAKE の機胜はこの章で説明
しおいたす。
メむクファむルの内容
NMAKE のメむクファむルは、蚘述ブロック、マクロ、掚論芏則、およびディレクティブで構成されおいたす。この節では、メむクファむルを曞く䞊での抂芁をたずめおいたす。メむクファむルの各芁玠に぀いおは、以降の節で説明したす。
制埡文字のリテラルずしおの䜿甚
必芁ならば、NMAKE が制埡文字ずしお甚いる文字を䜿うこずもできたす。NMAKE の制埡文字は、次のずおりです。
:  ;  #  (  )  $  ^  \  {  }  !  @  -
NMAKE の制埡文字を、制埡するために䜿うのではなくリテラル文字ずしお䜿うずきは、その文字の前にカレット (^) を付けたす。NMAKE は、制埡文字以倖の文字の前に眮かれたカレットは無芖したす。クォヌテヌションで囲たれたカレットは、リテラル文字ず芋なされたす。
カレットを行の最埌で䜿っお、文字列やマクロの定矩にリテラルずしお改行文字を䜿うこずができたす。このカレットによっお、NMAKE は、改行文字を改行ではなく、マクロの䞀郚であるず解釈したす。この機胜の意味は、マクロ定矩の行を継続する円蚘号 (\) ずは異なるので、泚意しおください。円蚘号のあずの改行文字は、スヮ
yヌスに眮き換えられたす。詳しくは、このファむルの「ナヌザヌ定矩マクロ」を参照しおください。
コマンド行䞭のパヌセント蚘号 (%) は、ファむル指定子の開始を瀺すものずしお解釈されたす (このファむルの「ファむル名構成芁玠を参照するための構文」を参照しおください)。NMAKE は、%s をファむル名ずしお解釈し、%| に続く d, e, f, p, F の文字列をファむル名たたはパスの 1 郚たたは党郚ず解釈したす。コマンド行
でパヌセントをリテラル文字ずしお䜿うずきは、パヌセントを 2 ぀ (%%) 蚘述しおください。これらの堎合以倖は、NMAKE はパヌセント蚘号 1 ぀をリテラル文字ずしお解釈したす。ただし、NMAKE は぀ねに 2 ぀のパヌセント蚘号 (%%) を 1 ぀のパヌセント蚘号ずしお解釈するため、リテラル文字ずしお %% を衚したいずきには、
%%% ずパヌセント蚘号 3 ぀で蚘述するか、%%%% のように 4 ぀蚘述したす。
ドル蚘号 ($) をコマンドでリテラル文字ずしお䜿うには、ドル蚘号を 2 ぀ ($$) 蚘述したす。この方法は、^$ が有効なほかの堎合にも䜿うこずができたす。
マクロ定矩でのリテラル文字に぀いお詳しくは、このファむル の「マクロ定矩で䜿われる制埡文字」を参照しおください。
ワむルドカヌド
タヌゲット ファむルや䟝存ファむルを指定するずきに、MS-DOS のワむルドカヌド (* ず ?) を䜿うこずができたす。NMAKE は、䟝存関係行にあるワむルドカヌドを展開したす。コマンドの䞭で指定されおいるワむルドカヌドは、そのコマンドに枡されたす。このずきは、NMAKE はそのワむルドカヌドを展開したせん。

䟋
次に瀺す蚘述ブロックでは、ワむルドカヌドの * が 2 回䜿われおいたす。

project.exe : *.c
	cl *.c /Feproject.exe

この䟋で、NMAKE は䟝存関係行にある *.c を展開し、カレント ディレクトリの䞭から拡匵子 .C を持぀すべおのファむルを探し出したす。ファむル .C の䞭に叀いものがあるず、CL コマンドはファむル *.c を展開しお、それらすべおのファむルをコンパむルおよびリンクしたす。
コメント
メむクファむルでは、シャヌプ蚘号 (#) のあずにコメント (泚釈文) を曞くこずができたす。NMAKE は、シャヌプ蚘号から改行文字の間に蚘述されたものを無芖したす。次に、コメント蚘述の䟋を瀺したす。

# コメント行

OPTIONS = /MAP  # マクロ定矩行

all.exe : one.obj two.obj  # 䟝存関係行
	link one.obj two.obj;
# コマンド蚘述ブロックの間の行
	copy one.exe \release

obj.exe:  # 掚論芏則蚘述行

コマンド ラむンには、コメントを蚘述するこずはできたせん。䟝存関係行や掚論芏則を定矩しおいる行ず同じ行にコマンドを蚘述したずきも同様に、コメントは蚘述できたせん。ただし、コマンド蚘述ブロックの行の間にはコメントを蚘述できたす。そのずきは、行の先頭をシャヌプ蚘号 # で始たるようにする必芁がありたす。
リテラル文字ずしお シャヌプ蚘号 # を䜿うずきは、次に瀺すようにカレット (^) を前に眮いおください。

DEF = ^#define  #Macro representing a C preprocessing directive

TOOLS.INI ファむルでもコメントを蚘述できたす。TOOLS.INI では、コロン (;) を䜿っおコメントを蚘述するこずもできたす。このファむルの「TOOLS.INI ファむル」を参照しおください。
長いファむル名
䜿っおいるファむル システムで長いファむル名がサポヌトされおいるずきには、その名前を䜿うこずができたす。ただし、そのずきはダブル クォヌテヌション (") でそのファむル名を囲む必芁がありたす。次に、䟝存関係行での䟋を瀺したす。

all : "VeryLongFileName.exe"

蚘述ブロック
蚘述ブロックはメむクファむルの䞭心ずなる郚分です。以䞋に代衚的な NMAKE 蚘述ブロックを瀺したす。ここでは、䟝存関係行、タヌゲット郚、䟝存郚に぀いお順に説明しおいたす。

myapp.exe : myapp.obj another.obj myapp.def
    link myapp another, , NUL, mylib, myapp
    copy myapp.exe c:\project

蚘述ブロックは、“䟝存関係行”で始たりたす。䟝存関係行では、1 ぀以䞊の“タヌゲット”ファむルず 0 たたは 1 ぀以䞊の“䟝存”ファむルを指定したす。タヌゲット ファむルが存圚しないずき、たたはタヌゲット ファむルの最終倉曎日時よりも新しい䟝存ファむルが 1 ぀でもあったずき、NMAKE はそのタヌゲットに察するヮ
Rマンド蚘述ブロックを実行したす。コマンド蚘述ブロックに぀いおは、「コマンド」を参照しおください。

䟝存関係行
蚘述ブロックは、“䟝存関係行”で始たりたす。䟝存関係行では、1 ぀以䞊の“タヌゲット”ファむルず 0 たたは 1 ぀以䞊の“䟝存”ファむルを指定したす。タヌゲット ファむルが存圚しないずき、たたはタヌゲット ファむルの最終倉曎日時よりも新しい䟝存ファむルが 1 ぀でもあったずき、NMAKE はそのタヌゲットに察するヮ
Rマンド蚘述ブロックを実行したす。以䞋に䟝存行の䟋を瀺したす。

myapp.exe : myapp.obj another.obj myapp.def

この䟋では、myapp.obj、another.obj たたは myapp.def のいずれかが曎新されるず、NMAKE は myapp.exe を再ビルドしたす。
䟝存関係行をむンデントさせるこずはできたせん (䟝存関係行の先頭にスペヌスやタブを入れないでください)。最初のタヌゲットを、行の先頭に指定する必芁がありたす。タヌゲット郚ず䟝存郚の間は、「耇数の蚘述ブロックでのタヌゲットの䜿い方」の項での説明をのぞき、コロン (:) で区切りたす。コロンの前埌にはスペヌス
たたはタブを入れるこずができたす。䟝存関係行は、1 行で蚘述する必芁がありたす。ただし、タヌゲット たたは䟝存ファむルの埌ろに円蚘号 (\) を付けるこずにより䟝存関係行を耇数行にわたっお蚘述できたす。
コマンドを実行する前に、NMAKE はすべおの䟝存関係行ず適切な掚論芏則を評䟡しお、タヌゲット ファむルを完党に曎新するのに必芁なすべおの順序を指定する、“䟝存ツリヌ”を䜜りたす。NMAKE は、䟝存ファむル自䜓がほかの蚘述ブロックの䟝存関係行でタヌゲット ファむルずしお指定されおいたり、その䟝存関係行の䟝存フ
ァむルが別の堎所でタヌゲットになっおいるかをチェックしたす。そのあずに NMAKE は、䟝存ツリヌを䜜り、最終倉曎日時をチェックしたす。䟝存ツリヌの䞭にタヌゲット ファむルよりも新しい䟝存ファむルがあるずきには、NMAKE は必芁なファむルを曎新しおからタヌゲットをビルドしたす。
タヌゲット郚
䟝存関係行のタヌゲット郚には、1 ぀以䞊のタヌゲット ファむル名を指定したす。少なくずも 1 ぀のタヌゲット ファむルを指定する必芁がありたす。耇数指定するずきは、ファむル名を 1 個以䞊のスペヌスたたはタブで区切っおください。ファむル名は、ディレクトリ パスを付けお指定できたす。ファむル名は、倧文字小文字
区別がありたせん。タヌゲットは、パスを含めお 256 文字以内で指定する必芁がありたす。
コロン (:) の前の最埌のタヌゲット ファむル名が、1 文字のずきは、必ずコロンの前にスペヌスを入れおください。スペヌスがないず、NMAKE はこのコロンをドラむブ指定子であるず刀断したす。
通垞、タヌゲット郚には蚘述ブロックのコマンドを䜿っおビルドするファむルの名前を指定したすが、有効なファむル名であればどのファむルでも指定できたす。たた、疑䌌タヌゲットをタヌゲットずしお指定するこずもできたす。詳しくは、このファむルの「疑䌌タヌゲット」の項を参照しおください。
NMAKE のコマンド ラむンでタヌゲット ファむルが指定されるず、NMAKE はそのタヌゲットをビルドしたす。コマンド ラむンでタヌゲット ファむルが指定されなかったずきには、NMAKE はメむクファむルの最初の䟝存関係行の先頭に指定されおいるタヌゲットをビルドしたす。
以前の䟋では、1 ぀のタヌゲット ファむル MYAPP.EXE が指定され、このタヌゲットが存圚しないずきや曎新が必芁なずきは、ビルドするように NMAKE に指瀺しおいたす。
耇数の蚘述ブロックでのタヌゲットの䜿い方
以前の䟋のようにに指定したずきは、タヌゲットは 1 ぀の蚘述ブロックにだけありたす。耇数の蚘述ブロックを䜿っおタヌゲットを曎新するには、タヌゲット郚ず䟝存郚ずの間を 2 ぀のコロン (::) で区切りたす。この機胜は、べ぀べ぀のコマンドによっお生成された芁玠を含む耇雑なタヌゲット ファむルをビルドするずきに有月
ᅵ

䟋
次に瀺すメむクファむルでは、ラむブラリを曎新したす。

target.lib :: one.asm two.asm three.asm
	ML one.asm two.asm three.asm
	LIB target -+one.obj -+two.obj -+three.obj;
target.lib :: four.c five.c
	CL /c four.c five.c
	LIB target -+four.obj -+five.obj;

この䟋では、アセンブリ蚀語のファむルが 1 ぀でもラむブラリよりもあずに倉曎されるず、NMAKE は゜ヌス ファむルをアセンブルしお、ラむブラリを曎新したす。同様に、C 蚀語のファむルが 1 ぀でも倉曎されるず、NMAKE は C のファむルをコンパむルしお、ラむブラリを曎新したす。
耇数の䟝存関係行でのタヌゲットの重耇
1 ぀の蚘述ブロックで同じタヌゲットが耇数の䟝存関係行を䜿っお指定されおいるずき、その䟝存関係行は 1 行の䟝存関係行のように扱われたす。たずえば、次のように指定したずしたす。

bounce.exe : jump.obj
bounce.exe : up.obj
	echo Building bounce.exe...

この䟋は、次のように指定したずきず同じ結果になりたす。

bounce.exe : jump.obj up.obj
	echo Building bounce.exe...

このような評䟡方法が行われるためにいく぀かの圱響がありたす。NMAKE は 1 回に぀き 1 ぀のタヌゲットを元にしお䟝存ツリヌを䜜るため、次のように別のタヌゲットが含たれおしたうこずがありたす。

bounce.exe leap.exe : jump.obj 
bounce.exe climb.exe : up.obj
	echo Building bounce.exe...

この䟋で、NMAKE は 3 ぀のタヌゲットそれぞれに぀いお、別々の蚘述ブロックで指定されおいるように䟝存関係行を評䟡したす。bounce.exe たたは climb.exe を曎新する必芁があるずき、NMAKE は指定されたコマンドを実行したす。leap.exe を曎新する必芁があるずきは、指定されたコマンドは実行されず、NMAKE は掚論芏則の
適甚を詊みたす。
メむクファむルの䞭の異なる䟝存関係行で同じタヌゲットを指定するずきには、泚意が必芁になりたす。同じタヌゲットが、メむクファむルの異なる堎所の 1 ぀のコロン (:) で区切られおいる 2 ぀の䟝存関係行で指定されおいお、しかもコマンドがそのうちの 1 ぀の䟝存関係行のあずにだけ指定されおいるずき、NMAKE はその 2
 ぀の䟝存関係行が隣接たたは結合されおいるように扱いたす。このような堎合、NMAKE はコマンドの指定がない䟝存関係行に察しお掚論芏則を実行したせん (「掚論芏則」を参照しおください)。NMAKE は その䟝存関係行が 1 ぀の蚘述ブロックに属しおいるず芋なし、䞀方の䟝存関係行で指定されおいるコマンドを実行したす。
次に瀺すメむクファむルは、前の䟋ず同じように解釈されたす。

bounce.exe : jump.obj
	echo Building bounce.exe...
Technical Details
Message-ID: <NEWTNews.814820003.2914.test3@japan4.netmanage.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: fe8aa,d3baba2e91d061e0,start
X-Google-Attributes: gidfe8aa,public
From: test3@japan4.netmanage.com
Subject: test-ignore
Date: 1995/10/27
Message-ID: <NEWTNews.814820003.2914.test3@japan4.netmanage.com>
X-Deja-AN: 118216301
organization: PSI Public Usenet Link
content-type: TEXT/PLAIN; charset=ISO-2022-JP
mime-version: 1.0
newsgroups: ca.test