Sun WorkShop の概要 | ![]() ![]() ![]() ![]() ![]() |
付録 B
make
ユーティリティとメークファイル
make
ユーティリティとメークファイルは、Sun WorkShop でのアプリケーションの自動構築に役立ちます。この付録では、make
ユーティリティ、メークファイル、メークファイルマクロに関する基本情報を提供します。また、メークファイルオプションを設定したり、メークファイルマクロを追加、変更、無効にするための Sun WorkShop のダイアログボックスについても説明します。独自のメークファイルを作成しないでプログラムを構築する場合は、「プログラムの構築」と 「デフォルト値を使用した構築」を参照してください。
make
ユーティリティを使用して、プログラムをコンパイルし、リンクする方法を指示できます。一般に、大きなアプリケーションは、複数のソースファイルおよびインクルードファイルの集まりであり、複数のライブラリとリンクする必要があります。ソースファイルの一部を変更すると、その部分を再コンパイルし、再リンクする必要があります。このプロセスを、アプリケーションを構成するファイル間の相互関係と、それぞれの部分の再コンパイルと再リンクに必要なコマンドを指定することによって自動化できます。make
は、メークファイル内の指定に基づいて、再コンパイルが必要なファイルだけ再コンパイルし、指定されたオプションとライブラリがリンクされるようにします。プログラム開発ツールとして
make
を使用する方法については、『make
改訂版』
(発行 : 株式会社オライリー・ジャパン) などの市販本を参照してください。メークファイル
makefile
と呼ばれるファイルは、どのような構造でソースファイルやオブジェクトファイルが他のファイルに依存しているかをmake
ユーティリティに示します。また、それらファイルのコンパイルやリンクに必要なコマンドも、このファイルで定義されます。構築する各ファイル (実行のステップ) をターゲットと呼びます。メークファイルの各エントリは、ターゲットオブジェクトの依存関係とそのオブジェクトを構築 (
make
) するために必要なコマンドを表す規則です。メークファイル内の規則の構造は次のとおりです。
target: dependencies-list
TAB
build-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
ユーティリティを起動するには、コマンド行から次のコマンドを入力します。
%make
Sun 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) のマニュアルページを参照してください。
%make
NAME=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. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |