254 lines
5.5 KiB
Groff
254 lines
5.5 KiB
Groff
.\" Copyright (c) 2002-2003 David O'Brien <obrien@FreeBSD.org>
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. Neither the name of the author nor the names of any contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL DAVID O'BRIEN OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" %FreeBSD: src/share/man/man5/style.Makefile.5,v 1.11 2004/06/20 12:35:16 mpp Exp %
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd February 28, 2003
|
|
.Dt STYLE.MAKEFILE 5
|
|
.Os
|
|
.Sh 名称
|
|
.Nm style.Makefile
|
|
.Nd
|
|
.Fx
|
|
における
|
|
.Pa Makefile
|
|
ファイルのスタイルガイド
|
|
.Sh 解説
|
|
このファイルは
|
|
.Fx
|
|
ソースツリーの makefile に好ましいスタイルを明記しています。
|
|
.Bl -bullet
|
|
.It
|
|
全ての makefile はファイルの先頭に SCM ID を持ち、それに空行が続きます。
|
|
.Bd -literal
|
|
# $FreeBSD\&$
|
|
|
|
.Ed
|
|
.It
|
|
必要ならば、次に
|
|
.Cm .PATH :
|
|
が続きます。
|
|
.Dq Li ".PATH: "
|
|
のように、コロンの後に単一の
|
|
.Tn アスキー
|
|
スペースが続くように綴ります。
|
|
.Va VPATH
|
|
変数は使わないでください。
|
|
.It
|
|
特殊変数 (
|
|
.Va LIB 、 SRCS 、 MLINKS
|
|
など) は、作成されるもの、バイナリの構築に使うもの、
|
|
バイナリのインストールに使うものの順番で並べます (「作成物順」)。
|
|
あるいは構築される順番、つまり主となるプログラム (あるいはライブラリ) に
|
|
使うものが先にくるように並べても構いません (「構築物順」)。
|
|
一般的な「作成物順」はこうです:
|
|
.Va PROG Ns / Ns Oo Va SH Oc Ns Va LIB Ns / Ns Va SCRIPTS
|
|
.Va FILES
|
|
.Va LINKS
|
|
.Oo Va NO Oc Ns Va MAN
|
|
.Va MLINKS
|
|
.Va INCS
|
|
.Va SRCS
|
|
.Va WARNS
|
|
.Va CFLAGS
|
|
.Va DPADD
|
|
.Va LDADD 。
|
|
一般的な「構築物順」はこうです:
|
|
.Va PROG Ns / Ns Oo Va SH Oc Ns Va LIB Ns / Ns Va SCRIPTS
|
|
.Va SRCS
|
|
.Va WARNS
|
|
.Va CFLAGS
|
|
.Va DPADD
|
|
.Va LDADD
|
|
.Va INCS
|
|
.Va FILES
|
|
.Va LINKS
|
|
.Oo Va NO Oc Ns Va MAN
|
|
.Va MLINKS 。
|
|
.It
|
|
.In bsd.prog.mk
|
|
を使い、
|
|
.Va PROG
|
|
と同じ名前の単一のソースファイルである場合は、
|
|
.Va SRCS
|
|
を省略します。
|
|
.It
|
|
.In bsd.prog.mk
|
|
を使い、
|
|
.Va PROG
|
|
と同じ名前で、セクション 1 のマニュアルページである時は、
|
|
.Va MAN
|
|
を省略します。
|
|
.It
|
|
変数への代入はすべて
|
|
.Dq Va VAR Ns Ic =
|
|
のように綴ります。
|
|
つまり、変数名と
|
|
.Ic =
|
|
の間には空白を置きません。
|
|
可能ならば、値はアルファベット順にソートするようにします。
|
|
.It
|
|
変数を一回だけ設定する
|
|
(もしくは変数を最初に設定する)
|
|
場合に、
|
|
.Ic +=
|
|
を使うのはやめてください。
|
|
.It
|
|
簡単な makefile で、空行を使うのはやめてください。
|
|
しかしより複雑で長いものに対しては、部分的に関連する項目を
|
|
まとめるために使います。
|
|
.It
|
|
基本的に
|
|
.Va WARNS
|
|
は
|
|
.Va CFLAGS
|
|
の修飾子ですが、
|
|
.Va CFLAGS
|
|
の前に置きます。
|
|
.Va WARNS
|
|
は重要なものであり、大量の
|
|
.Va CFLAGS
|
|
の記述の中で見失わないように、
|
|
.Va CFLAGS
|
|
の後ろではなくて、
|
|
.Va CFLAGS
|
|
の前に置きます。
|
|
コマンドラインや
|
|
.Pa /etc/make.conf
|
|
で上書きできるように、
|
|
.Va WARNS
|
|
は
|
|
.Dq Li "WARNS?= "
|
|
のように綴ります。
|
|
.It
|
|
.Dq Li "NO_WERROR= yes"
|
|
は使うべきでありません。これは
|
|
.Va WARNS
|
|
の目的を無効にしてしまいます。
|
|
これはコマンドラインで、かつ特殊な状況でのみ使用されるべきです。
|
|
.It
|
|
.Va CFLAGS
|
|
は
|
|
.Dq Li "CFLAGS+= "
|
|
のように綴ります。
|
|
.It
|
|
.Va CFLAGS
|
|
において、
|
|
.Fl I
|
|
の前に
|
|
.Fl D
|
|
のリストを置くのは、アルファベット順という点からも、また
|
|
.Fl D
|
|
を見やすくする点からも好ましいことです。
|
|
.Fl D
|
|
はしばしば条件つきのコンパイルに影響し、また
|
|
.Fl I
|
|
は意外に長くなりがちです。
|
|
長い
|
|
.Va CFLAGS
|
|
の設定では
|
|
.Fl D
|
|
と
|
|
.Fl I
|
|
の間で分割します。
|
|
.It
|
|
.Va CFLAGS
|
|
において、 GCC 的なもの (
|
|
.Fl g
|
|
や
|
|
.Fl Wall
|
|
といったもの)
|
|
を使うのはやめましょう。
|
|
.It
|
|
一般的には
|
|
.Va VAR Ns Ic =
|
|
と値の間に、
|
|
.Tn アスキー
|
|
タブをひとつ入れます。
|
|
値が 9 桁目から始まるようにするためです。
|
|
変数名が 9 桁を超える場合は、単一の
|
|
.Tn アスキー
|
|
スペースで良いです。
|
|
また変数名がとても長い場合は、ホワイトスペース無しでも良いです。
|
|
.It
|
|
.Ic .include In bsd.*.mk
|
|
は最後です。
|
|
.It
|
|
.Va $<
|
|
や、
|
|
.Va $@
|
|
といった時代錯誤のものを使うのはやめましょう。
|
|
代わりに
|
|
.Va ${.IMPSRC}
|
|
か
|
|
.Va ${.ALLSRC}
|
|
、それと
|
|
.Va ${.TARGET}
|
|
を使います。
|
|
.El
|
|
.Pp
|
|
論理的なグループ分けを表現したいために、
|
|
上記のいくつかに従わないこともしばしばあります。
|
|
.Sh 使用例
|
|
最もシンプルな、プログラムの
|
|
.Pa Makefile
|
|
です:
|
|
.Bd -literal -offset indent
|
|
# $FreeBSD\&$
|
|
|
|
PROG= foo
|
|
|
|
\&.include <bsd.prog.mk>
|
|
.Ed
|
|
.Pp
|
|
最もシンプルな、ライブラリの
|
|
.Pa Makefile
|
|
です:
|
|
.Bd -literal -offset indent
|
|
# $FreeBSD\&$
|
|
|
|
LIB= foo
|
|
SHLIB_MAJOR= 1
|
|
MAN= libfoo.3
|
|
SRCS= foo.c
|
|
|
|
\&.include <bsd.lib.mk>
|
|
.Ed
|
|
.Sh 関連項目
|
|
.Xr make 1 ,
|
|
.Xr style 9
|
|
.Sh 歴史
|
|
このマニュアルページは、
|
|
.Fx
|
|
の
|
|
.Xr style 9
|
|
マニュアルページと同じソースに影響されています。
|
|
.Sh バグ
|
|
例外を許さないスタイル規則は、ほとんどありません。
|
|
多くのスタイルは、 makefile 全体の内容、あるいはその前後の行に
|
|
強く依存しています。
|