make ユーティリティのマクロ機能を使用すると、パラメータを使用しないで、簡単に文字列を置き換えることができます。たとえば、ターゲットプログラム pattern を構成する再配置可能なファイルの一覧を 1 つのマクロ文字列として表すと、変更する際も処理が簡単です。
マクロ文字列は、次の形式で定義します。
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 セットの値が使用されます。この設定は、次のコマンド行を付加することで無効になります。
demo% make "FFLAGS=-u -o"
make コマンド行の FFLAGS マクロの定義はメークファイルの初期設定に優先し、-o フラグと -u フラグの両方が f77 に渡されます。コマンド行で "FFLAGS=" と指定しても、マクロをリセットすることができます。
Sun WorkShop の「マクロ作成」ダイアログボックスを使用して、マクロ値を無効にすることができます。「メークファイルマクロの使い方」を参照してください。