EN JA
STYLE.MAKEFILE(5)
STYLE.MAKEFILE(5) FreeBSD File Formats Manual STYLE.MAKEFILE(5)

名称

style.MakefileFreeBSD における Makefile ファイルのスタイルガイド

解説

このファイルは FreeBSD ソースツリーの makefile に好ましいスタイルを明記しています。
  • 全ての makefile はファイルの先頭に SCM ID を持ち、それに空行が続きます。

    # $FreeBSD$ 
    
  • 必要ならば、次に .PATH: が続きます。“ .PATH: ”のように、コロンの後に単一の ASCII スペースが続くように綴ります。 VPATH 変数は使わないでください。
  • 特殊変数 (すなわち、 LIB, SRCS, MLINKS など) は、“product” (製品) の順序でリストされ、次にバイナリを構築してインストールします。また、特殊変数は“build” (構築) 順にリストされます: すなわち、主となるプログラム (あるいはライブラリ) が最初になります。一般的な“product” (製品) の順序は、次の通りです: PROG/[ SH] LIB/ SCRIPTS FILES LINKS [ NO_] MAN MLINKS INCS SRCS WARNS CFLAGS DPADD LDADD。一般的な“build” (構築) 順序は次の通りです: PROG/[ SH] LIB/ SCRIPTS SRCS WARNS CFLAGS DPADD LDADD INCS FILES LINKS [ NO_] MAN MLINKS
  • < bsd.prog.mk> を使い、 PROG と同じ名前の単一のソースファイルである場合は、 SRCS を省略します。
  • < bsd.prog.mk> を使い、 PROG と同じ名前で、セクション 1 のマニュアルページである時は、 MAN を省略します。
  • 変数への代入はすべて“ VAR=”のように綴ります。つまり、変数名と = の間には空白を置きません。可能ならば、値はアルファベット順にソートするようにします。
  • 変数を一回だけ設定する (もしくは変数を最初に設定する) 場合に、 += を使うのはやめてください。
  • 簡単な makefile で、空行を使うのはやめてください。しかしより複雑で長いものに対しては、部分的に関連する項目をまとめるために使います。
  • 基本的に WARNSCFLAGS の修飾子ですが、 CFLAGS の前に置きます。 WARNS は、重要なものであり、大量の CFLAGS の記述の中で見失わないように、 CFLAGS の後ろではなくて、 CFLAGS の前に置きます。コマンドラインや make.conf(5) で上書きできるように、 WARNS は、“ WARNS?= ”のように綴ります。
  • NO_WERROR= yes”は使うべきでありません。これは WARNS の目的を無効にしてしまいます。これは、コマンドラインで、かつ特殊な状況でのみ使用されるべきです。
  • CFLAGS は“ CFLAGS+= ”のように綴ります。
  • CFLAGS において、 -I の前に -D のリストを置くのは、アルファベット順という点からも、また -D を見やすくする点からも好ましいことです。 -D はしばしば条件つきのコンパイルに影響し、また -I は意外に長くなりがちです。長い CFLAGS の設定では -D-I の間で分割します。
  • CFLAGS において、GCC 的なもの ( -g-Wall といったもの) を使うのはやめましょう。
  • 一般的には VAR= と値の間に、 ASCII タブをひとつ入れます。値が 9 桁目から始まるようにするためです。変数名が 9 桁を超える場合は、単一の ASCII スペースで良いです。また変数名がとても長い場合は、ホワイトスペース無しでも良いです。
  • .include < bsd.*.mk> は最後です。
  • $< や、 $@ といった時代錯誤のものを使うのはやめましょう。代わりに ${.IMPSRC}${.ALLSRC}、それと ${.TARGET} を使います。
  • ベースシステムの“foo”部分を構築しないようにするためには、 NOFOO ではなく NO_FOO を使用します。
  • ベースシステムの何かをオプションで構築するためには、 WANT_FOO または USE_FOO ではなく、ノブ WITH_FOO と記述します。後者は FreeBSD ports コレクションのために予約されています。
  • defined() でチェックされるだけの変数には、なにも偽の値を与えないでください。

論理的なグループ分けを表現したいために、上記のいくつかに従わないこともしばしばあります。

使用例

最もシンプルな、プログラムの Makefile です:

# $FreeBSD$ 
 
PROG= foo 
 
.include <bsd.prog.mk>

最もシンプルな、ライブラリの Makefile です:

# $FreeBSD$ 
 
LIB= foo 
SHLIB_MAJOR= 1 
MAN= libfoo.3 
SRCS= foo.c 
 
.include <bsd.lib.mk>

関連項目

make(1), make.conf(5), style(9)

歴史

このマニュアルページは、 FreeBSDstyle(9) マニュアルページと同じソースに影響されています。

バグ

例外を許さないスタイル規則は、ほとんどありません。多くのスタイルは、makefile 全体の内容、あるいはその前後の行に強く依存しています。
January 8, 2005 FreeBSD