| Sun WorkShop の概要 |
付録 B
makeユーティリティとメークファイル
makeユーティリティとメークファイルは、Sun WorkShop でのアプリケーションの自動構築に役立ちます。この付録では、makeユーティリティ、メークファイル、メークファイルマクロに関する基本情報を提供します。また、メークファイルオプションを設定したり、メークファイルマクロを追加、変更、無効にするための Sun WorkShop のダイアログボックスについても説明します。独自のメークファイルを作成しないでプログラムを構築する場合は、「プログラムの構築」と 「デフォルト値を使用した構築」を参照してください。
makeユーティリティを使用して、プログラムをコンパイルし、リンクする方法を指示できます。一般に、大きなアプリケーションは、複数のソースファイルおよびインクルードファイルの集まりであり、複数のライブラリとリンクする必要があります。ソースファイルの一部を変更すると、その部分を再コンパイルし、再リンクする必要があります。このプロセスを、アプリケーションを構成するファイル間の相互関係と、それぞれの部分の再コンパイルと再リンクに必要なコマンドを指定することによって自動化できます。makeは、メークファイル内の指定に基づいて、再コンパイルが必要なファイルだけ再コンパイルし、指定されたオプションとライブラリがリンクされるようにします。プログラム開発ツールとして
makeを使用する方法については、『make改訂版』
(発行 : 株式会社オライリー・ジャパン) などの市販本を参照してください。メークファイル
makefileと呼ばれるファイルは、どのような構造でソースファイルやオブジェクトファイルが他のファイルに依存しているかをmakeユーティリティに示します。また、それらファイルのコンパイルやリンクに必要なコマンドも、このファイルで定義されます。構築する各ファイル (実行のステップ) をターゲットと呼びます。メークファイルの各エントリは、ターゲットオブジェクトの依存関係とそのオブジェクトを構築 (
make) するために必要なコマンドを表す規則です。メークファイル内の規則の構造は次のとおりです。
target: dependencies-list
TABbuild-commandstarget はターゲット、dependencies-list は依存関係リスト、build-commands は構築コマンドです。依存関係リストの各エントリは、ターゲットファイル名を示す行で始まり、その後にそのターゲットが依存するすべてのファイルが続きます。構築コマンドのエントリは、ターゲットファイルを構築する Bourne シェルコマンドを指定した 1 行以上の行で構成されます。これらの行はそれぞれ、タブでインデントする必要があります。
FORTRAN 77 の例
次のようなソースファイルとメークファイルから構成されるプログラムがあると仮定します。
コード例 B-1 Fortran 77 用のメークファイル例
pattern.fとcomputepts.fは共に、commonblockをインクルードします。ここでは、各.fファイルをコンパイルし、これら 3 つの再配置可能ファイルを、一連のライブラリとリンクし、patternという名前のプログラムに作成します。
このメークファイルの先頭行は、
patternの作成がpattern.o、computepts.o、startupcore.oに依存していることを表します。2 行目以降は、再配置可能な.oファイルとライブラリからpatternを作成するためのコマンドです。C++ の例
次のようなソースファイルとメークファイルから構成されるプログラムがあると仮定します。
コード例 B-2 C++ 用のメークファイル例
このメークファイルの先頭行では、
allというラベルを使用して、一連のターゲットファイルをまとめています。2 行目以降は、ソースファイルのいずれかと依存関係にある 3 つのターゲットファイルを作成するためのコマンドです。
makeユーティリティ
makeユーティリティを起動するには、コマンド行から次のコマンドを入力します。
%makeSun WorkShop の「構築オプション」ダイアログボックスを使用して、アプリケーションに応じて
makeコマンドに必要なオプションを指定できます。「構築オプションの指定」を参照してください。
makeユーティリティは、現在のディレクトリ内にあるmakefileまたはMakefileという名前のファイルを検索し、そのファイルから指示を受け取ります。
- メークファイルを読み取り、処理するべきすべてのターゲットファイル、ターゲットファイルが依存するファイル、ターゲットファイルの構築に必要なコマンドを特定する。
- それぞれのファイルが最後に変更された日時を検索する。
- 依存するファイルよりも古いターゲットファイルがあれば、そのターゲットファイルに対してメークファイルで指定されているコマンドを使用して再構築する。
メークファイルを簡単に作成できるように、
コード例 B-3makeユーティリティには、ターゲットファイルの接尾辞に応じたデフォルトの規則があります。ファイルの接尾辞が.fの場合は、makeはf77コンパイラを使用し、FFLAGSマクロで指定されたすべてのフラグ、-cフラグ、コンパイルするソースファイル名を引数として渡します。makeのデフォルトの接尾辞規則
makeはデフォルトの規則を使用して、computepts.fおよびstartupcore.fをコンパイルします。同様に、ファイルの接尾辞が.f95の場合は、f95コンパイラが使用されます。マクロ
makeユーティリティのマクロ機能を使用すると、パラメータを使用しないで、簡単に文字列を置き換えることができます。たとえば、ターゲットプログラムpatternを構成する再配置可能なファイルの一覧を 1 つのマクロ文字列として表すと、変更する際も処理が簡単です。makeのマクロについては、make(1S) のマニュアルページを参照してください。
%makeNAME=stringマクロ文字列であることを示すには、
$(NAME) の形式を使用します。この形式が使用されている場合、makeユーティリティは、自動的にそのマクロ文字列を実際の値に置き換えます。次に示す例では、すべてのオブジェクトファイルを指定したマクロ定義をメークファイルの先頭に追加します。
OBJ=pattern.o computepts.o startupcore.oこれで、ターゲット
patternに対して、メークファイル内で依存関係のリストとf77リンクコマンドの両方にこのマクロを使用できます。
pattern: $(OBJ)f77 $(OBJ) -lcore77 -lcore -lsunwindow \-lpixrect -o patternマクロ文字列の名前が 1 文字の場合は、括弧を省略できます。
Sun WorkShop の「メークのマクロ」ダイアログボックスを使用すると、WorkShop ターゲットの「マクロ」リストにマクロを追加したり、リストからマクロを削除したり、リスト中のメークファイルマクロに値を割り当て直すことができます。このダイアログボックスの詳細については、「メークファイルマクロの使用方法」を参照してください。
makeのコマンド行オプションを使用して、メークファイルマクロの初期値を無効にできます。たとえば、メークファイルの先頭に以下の行を指定します。
FFLAGS=-u次に、
computepts.fのコンパイル行を以下のようにします。
f77 $(FFLAGS) -c computepts.f
f77 $(FFLAGS) $(OBJ) -lcore77 -lcore -lsunwindow \lpixrect -o pattern引数を指定しないで
makeコマンドだけを実行すると、上記で設定したFFLAGSの値が利用されます。また、次のようにコマンド行で指定すると、値が上書きされて優先されます。
%make "FFLAGS=-u -O"
makeコマンド行のFFLAGSマクロの定義はメークファイルの初期設定よりも優先され、-oフラグと-uフラグの両方がf77に渡されます。コマンド行で "FFLAGS=" と指定し、マクロをリセットすることもできます。
|
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |