🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: ca.test
Article #9277

test-ignore 93640k

#9277
From: test3
Date: Thu, 26 Oct 1995 00:00
528 lines
33405 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 ディレクティブを䜿いたす。それぞれ、このファむルの「コマンド修正子」
ず「ドット ディレクティブ」を参照しおください。メむクファむル䞭で郚分的に、/I ã‚’èš­
定たたは解陀するには、!CMDSWITCHES ディレクティブを䜿いたす。このファむルの
「 プリプロセス ディレクティブ」を参照しおください。ビルドに関係ないずころでの゚
ラヌを無芖するには、/K オプションを䜿いたす。䞡方指定されたずきには、/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 は、改行文字を改行ではなく、マクロの
䞀郚であるず解釈したす。この機胜の意味は、マクロ定矩の行を継続する円蚘号 () ずは
異なるので、泚意しおください。円蚘号のあずの改行文字は、スペヌスに眮き換えられた
す。詳しくは、このファむルの「ナヌザヌ定矩マクロ」を参照しおください。
コマンド行䞭のパヌセント蚘号 (%) は、ファむル指定子の開始を瀺すものずしお解釈され
たす (このファむルの「ファむル名構成芁玠を参照するための構文」を参照しおください)。
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 はそのタヌゲットに察するコマンド蚘述ブロックを
実行したす。コマンド蚘述ブロックに぀いおは、「コマンド」を参照しおください。

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

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.814769805.20233.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,36ac0e22e8a6b9dc,start
X-Google-Attributes: gidfe8aa,public
From: test3@japan4.netmanage.com
Subject: test-ignore 93640k
Date: 1995/10/26
Message-ID: <NEWTNews.814769805.20233.test3@japan4.netmanage.com>
X-Deja-AN: 118216327
organization: PSI Public Usenet Link
content-type: TEXT/PLAIN; charset=ISO-2022-JP
mime-version: 1.0
newsgroups: ca.test