| |||||||||||
| minmakeは、Java/XMLベースのプラットフォーム依存しないmakeツールです。 minmakeは、UNIXのmakeやWindowsのnmakeと同様の目的で使用されます。 そのタスクの内容は、デフォルトでは、minmakeを走らせるディレクトリの中にあるmake.xmlファイルの中で記述されます。 以下は、minmakeで行うプロジェクトの完結した例です。 make.xml - 4つのモジュールのアプリケーションのためのファイル mdefs.xml - MINERVAプロジェクトのための一般的なルール usagi.xml - ホスト環境の宣言
make.xmlの記述はXML形式で行い、次のような構文にします。
make.xml <make [default="DefaultRule"]> (Include)* (Var)* (Rule|GenRule)* </make> パス、コマンド、コメントはすべて変数を持つことができます。 変数は、$(VariablenName) という形で参照されます。 変数を使用するために予めVar部分で定義せねばなりません。 変数HOSTNAMEは、予め定義され、minmakeが呼ばれるマシンの ホストネームを出力します。 これにより、例えば、特別なマシンに対して 特別に付け加えられるルールや変数(例えば、システム関連ディレクトリの ある場所などについて)を定義することができます。 <include>$(HOSTNAME).xml</include> の中で定義します。) また、変数を参照する際に、変数の中身の一部を修正することも可能です。 例えば、 $(Variable:.old-suffix=.new-suffix)という形で使います。 $(V:.min=.mbc)で、変数Vの拡張子を.minから.mbcに置換えることなどが可能です。 パスの指定やコマンド、コメントは、GenRuleの中でワイルドカードを 持つこともできます。ここでは、従属部分で、*マークは、ワイルドカード として使われます。 *が右から左へと現れるたびに、*の付けられた部分はカウントされ、コメント あるいはボディ部分で、$i (i in 1-9) という形式で参照されます。 例:MINERVAファイルのコンパイルのルール <genrule> <target>mbc</target> <dep>1.min</dep> <comment>compile $1.min</comment> <body>$(MINERVAC) $1.min</body> </genrule>
個々の説明Var(変数)部分で、変数は定義されます。例えば、<var> <name>JAVA</name> <value>jview d:/nologo=true /cp:a</value> </var> 変数は一つ以上の値を持つことができます。 <var> <name>SOURCE</name> <value>data-1.min</value> <value>data-2.min</value> <value>data-3.min</value> </var> ここで、個々の値域の内包する変数の値は、間にスペースを一つづつはさんで出力 されます。 上の例では、 SOURCE="data-1.min data-2.min data-3.min" として出力されます。 Ruleの部分では、ルールが定義されます。これらのルールは必要に応じて、 minmakeによって処理されます。(これは、makeで知られているのと類似の働きです。) Ruleは、特別なファイルのためのみのルールを出力します。(それゆえに、ターゲット 部分で*のワイルドカードを使用することはできません。) ルールは、body部分を持ちません。この場合、これに従属するルールを定義せねばなり ません。 GenRuleとRuleが存在する場合、特別なルールであるRuleのみが処理されます。 しかし、body部分を持たないdep部分においては、常に、すべてのrule/genruleのルールが処理されます。 ルールは、いくつかの属性のオプションを持ちます。 "input"属性は、与えられたファイルが、コマンドのための標準インプットとして 使われることを意味します。 "output"属性は、コマンドの標準出力が、指定されたファイルに回される ことを意味します。 "append"属性は、コマンドの標準出力が、与えられたファイルに追加される ことを意味します。 "dir"属性は、コマンドが与えられたディレクトリで行われることを意味します。 (これは、再帰的なmakeファイルの場合、特に重要です。) 例えば、 <rule> <target>all</target> <body dir="lib">$(MAKE) all</body> <body dir="kernel">$(MAKE) all</body> <body dir="bips">$(MAKE) all</body> </rule>このコマンドは、bin, kernel, libのディレクトリへ行き、そこで、再びmakeを実施 します。 minmakeは、以下のコマンドライン引数も持ちえます。
minmakeには、一連の予め設定されたコマンドがあります。予設定された コマンドは、通常のコマンドと同様に使用されます。予設定されたコマンドは、 オペレーティングシステムへの依存性を消すので有効です。 以下の予設定されたコマンドがあります。
cat以外の全ての内蔵述語では、body内の属性は無視されます。 dir属性は、すべての内蔵コマンドで無視されます。
| |||||||||||
| |||||||||||
| 戻る> |
|