本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 1 : ユーザーコマンド (A~M) > m

mkmf(1)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

mkmf ― makefile の作成

構文

mkmf [-acdeil] [-f makefile] [-F template] [-M language] [macroname=value... ]

説明

mkmf コマンドは、プログラムおよびライブラリの構成および保守方法を make コマンドに指示する makefile を作成します ( make(1) を参照)。 現在のワークディレクトリにおけるすべてのソースコード ファイル名を収集して makefile に挿入した後、 mkmf はインクルードされたファイルのソースコードをスキャンし、makefile に追加する従属情報を生成します。 ソースコード ファイルは、ファイル名の拡張子により識別されます。 mkmf は以下の拡張子を認識します。

.c  

C

.C  

C++

.f  

FORTRAN

.h  

インクルードファイル

.i  

Pascal インクルードファイル

.l  

Lex または Lisp

.o  

オブジェクトファイル

.p  

Pascal

.r  

Ratfor

.s  

アセンブラ

.y  

Yacc

mkmf コマンドは、生成する前に既存の makefile があるかどうかチェックします。 -f オプションを指定しない場合、 mkmfmakefile および Makefile の存在をチェックします。

makefile 作成後、テキストエディタを使用して任意の変更を行えます。 また、 mkmf は作成後に行われた変更とは関係なく、makefile におけるマクロ定義を再エディットするのに使用できます。

デフォルトでは、 mkmf はプログラム makefile を作成します。 ライブラリを処理する makefile を作成するには、 -l オプションを使用しなければなりません。

make の要求

mkmf により作成される makefile を指定した場合は、 make は以下の要求を認識します。

all  

プログラムまたはライブラリをコンパイルしてロードします。

clean  

すべてのオブジェクトおよびコアファイルを削除します。

clobber  

再生成可能なすべてのファイルを削除します。

depend  

makefile においてインクルードされたファイルの依存関係をアップデートします。

echo  

標準出力にソースコード ファイルの名前のリストを示します。

extract  

ライブラリから全オブジェクトファイルを抽出し、それらをソースコード ファイルと同じディレクトリに置きます。 ライブラリは変更されません。

index  

関数のインデックスを標準出力にプリントします。

install  

プログラムまたはライブラリをコンパイルおよびロードし、宛先ディレクトリに移動します。

print  

ソースコード ファイルを標準出力にプリントします。

tags  

ex エディタ ( ex(1) および ctags(1) を参照) 向けに、C、Pascal、Fortran ソースコード ファイルについての タグファイルを生成します。

update  

プログラムまたはライブラリより新しいソースコード ファイルがある場合に限り再コンパイルし、プログラムまたはライブラリをリンクしてインストールします。

同時に複数の要求を行えます。 例えば、(1) プログラムをコンパイル、リンク、(2) プログラムを宛先ディレクトリに移動、(3) すべての不要なオブジェクトファイルを削除するには以下のように使用します。

make install clean 

マクロ定義

mkmf は以下のマクロ定義を理解します。

CFLAGS  

C コンパイラフラグ。 現在処理中のディレクトリに含まれるファイルを検索した後、 mkmf-I コンパイラオプションで指定されたディレクトリに続いて、 /usr/include ディレクトリを検索します。

COMPILESYSTYPE  

/usr/include の位置。 COMPILESYSTYPE マクロまたは環境変数が定義されている場合、 mkmf/usr/include ではなく /$COMPILESYSTYPE/usr/include にあるファイルを検索します。

CXXFLAGS  

C++ コンパイラフラグ。 現在処理中のディレクトリに含まれるファイルを検索した後、 mkmf は、 -I コンパイラオプションで指定されたディレクトリ、次に /usr/include/CC ディレクトリ、続いて /usr/include ディレクトリを検索します。

DEST  

プログラムまたはライブラリをインストールするディレクトリ。

EXTHDRS  

カレントディレクトリの外部に含まれるファイルのリスト。 従属情報が生成されると、 mkmf は makefile におけるこのマクロ定義を自動的にアップデートします。

FFLAGS  

Fortran コンパイラフラグ。 現在処理中のディレクトリに含まれるファイルを検索した後、 mkmf-I コンパイラオプションで指定されたディレクトリ、続いて /usr/include ディレクトリを検索します。

HDRS  

カレントディレクトリに含まれるファイルのリスト。 mkmf は makefile におけるこのマクロ定義を自動的にアップデートします。

INSTALL 

インスタレーションプログラム名

LD 

リンクエディタ名

LDFLAGS  

リンクエディタフラグ

LIBRARY  

ライブラリ名。 また、このマクロは -l オプションをも含みます。

LIBS  

リンクエディタが外部参照を解決するのに必要なライブラリのリスト

MAKEFILE  

makefile 名

OBJS  

オブジェクトファイルのリスト。 mkmf は、makefile におけるこのマクロ定義を自動的にアップデートします。

PROGRAM  

プログラム名

SRCS  

ソースコード ファイルのリスト mkmf は、makefile におけるこのマクロ定義を自動的にアップデートします。

SUFFIX  

mkmf が認識するべき、ファイル名の拡張子を追加するためのリスト

SYSHDRS  

/usr/include ディレクトリ階層に含まれるファイルのリスト。 依存関係情報が生成されると、 mkmf は makefile におけるこのマクロ定義を自動的にアップデートします。 SYSHDRS が makefile から省略された場合、 mkmf/usr/include 依存関係条件を生成しません。

これらおよびすでに makefile にある他のマクロ定義は、 macroname=value 形式でコマンド行において置き換えられます。 例えば、C コンパイラフラグおよびプログラム名を変更するには以下の行をタイプしてください。

  • mkmf "CFLAGS=-I../include -O" PROGRAM=mkmf

空白のある CFLAGS などのマクロ定義は、ダブルクォーテーション (") マークで囲まなければならないことに注意してください。

環境

mkmf により環境が読み込まれます。 HDRS, EXTHDRS, SRCS, および OBJS を除くすべての変数は、マクロ定義であるものと仮定されます。 環境変数は、コマンド行のマクロ定義および makefile におけるマクロ定義の後に処理されます。 -e オプションにより、環境は強制的に makefile におけるマクロ定義を置き換えます。

ファイル名の拡張子

mkmf は、 SUFFIX マクロ定義における拡張子記述を指定することにより、ファイル名の拡張子を追加して認識すること、またはすでに認識しているものを無視することができます。 各拡張子記述では .suffix:tI の形式をとります。ただし、 t はファイルの内容を示す文字です (s はソースファイル、 o はオブジェクトファイル、 h はヘッダファイル、 x は実行ファイル)。 また、 I はヘッダファイルのインクルード構文を示すオプションの文字です (C は C 構文、 C++ は C 構文に標準検索ディレクトリとして /usr/include/CC を追加したもの、 F は Fortran および Ratfor 構文、 P は Pascal 構文)。 以下のリストは、 mkmf のデフォルトの設定を示します。

.c:sC  

C

.C:sC++  

C++

.f:sF  

Fortran

.h:h  

インクルードファイル

.i:h  

Pascal インクルードファイル

.l:sC  

Lex または Lisp

.o:o  

オブジェクトファイル

.p:sP  

Pascal

.r:sF  

Ratfor

.s:s  

アセンブラ

.y:sC  

Yacc

例えば、オブジェクトファイルの拡張子を .obj に変更し、Pascal インクルードファイルの拡張子定義を解除し、インクルードされたファイルに Fortran ファイルをスキャンしないためには、 SUFFIX のマクロ定義は以下にようにします。

SUFFIX = .obj:o .i: .f:s 

インクルード文の構文

C, C++, Fortran, および Pascal ソースコードのインクルード文の構文は以下の形式となります。

C/C++:  

#include "filename" 
#include filename

ただし、 # は行の最初の文字でなければなりません。

Fortran:  

$include '  filename '$
$INCLUDE '  filename '$

ただし、 $ は行の最初の文字でなければなりません。 または、インクルード文がカラム 7 から始まる場合は $ は省略できます。

いずれの場合も後続の $ は省略できます。

Pascal:  

$include '  filename '$
$INCLUDE '  filename '$

ただし、 $ は行の最初の文字でなければならず、後続の $ はオプションです。

ユーザー定義のテンプレート

カレントディレクトリに makefile がない場合、 mkmf は、通常 /usr/ccs/lib/mf にある標準 makefile テンプレートの C.p または C.l のうちから 1 つを使用します。 ただしそれは、ユーザーがディレクトリ $PROJECT/lib/mf に別の C.p または C.l のテンプレートファイルを持たない場合です。 $PROJECTPROJECT 環境変数に割り当てられたディレクトリの絶対パス名です。

オプション

mkmf が認識するオプションは以下のとおりです。

-a  

makefile の . で始まるソースファイルをインクルードします。

-c 

" creating makefile from ... "メッセージを抑止します。

-d 

include ファイルのソースコードのスキャンをオフにします。 古い依存関係情報は、makefile ではそのままにされます。

-e 

環境変数は makefiles 内のマクロ定義に優先します。

-f makefile 

別の makefile ファイル名を指定します。 デフォルトファイル名は Makefile です。

-i 

ユーザーにプログラムまたはライブラリ、およびインストールするディレクトリの名前を求めます。 これらの各問合わせに対する応答でキャリッジリターンがタイプされた場合、 mkmf は、デフォルトのプログラム名が a.out , またはデフォルトのライブラリ名が lib.a , また宛先ディレクトリがカレントディレクトリであると仮定します。

-l 

makefile を強制的にライブラリ makefile とします。

-F template 

別の makefile テンプレートのパス名を指定します。 パス名は、絶対パス名または相対パス名とすることができます。

-M language 

別の language 指定の makefile テンプレートを指定します。 デフォルトの言語は C であり、対応するプログラムおよびライブラリの makefile テンプレートはそれぞれ C.p および C.l です。 mkmf はこれらのテンプレートを /usr/ccs/lib/mf または $PROJECT/lib/mf から検索します。

診断

終了ステータス 0 は正常終了です。 終了ステータス 1 はエラーを示します。

警告

makefile 名は makefile 内にマクロ定義として含まれており、makefile が名称変更されたときにはそれも変更しなければなりません。

実行可能ファイルはライブラリにより異なるため、標準ライブラリの省略形は makefile にある LIBS マクロ定義内で完全パス名に展開しなければなりません。

生成された依存関係情報は、makefile において ### で始まる行の後に表示されます。 この行は削除しないでください。 また、makefile においてこの行の下には他の情報を挿入しないでください。

プログラムまたはライブラリの名前は、makefile 内の定義済みターゲット名と競合しないようにしてください。 make が自分自身を再帰的に無限回数実行するのを防ぐため、 update という名前は避けることが特に重要です。

著者

mkmf はカリフォルニア大学バークレー校で開発されました。

ファイル

/usr/ccs/lib/mf/C.p
  

標準プログラムの makefile テンプレート

/usr/ccs/lib/mf/C.l
  

標準ライブラリの makefile テンプレート

$PROJECT/lib/mf/C.p
  

ユーザー定義のプログラム makefile テンプレート

$PROJECT/lib/mf/C.l
  

ユーザー定義のライブラリ makefile テンプレート

参照

ar(1), ctags(1), ld(1), make(1)

『Automatic Generation of Make Dependencies』, Software-Practice and Experience, Walden, K., vol. 14, no. 6, pp. 575-585, June 1984.

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.