doc/documentation/manual-pages/ja/man5/style.Makefile.5
Sergio Carlavilla Delgado 989d921f5d Migrate doc to Hugo/AsciiDoctor
I'm very pleased to announce the release of
our new website and documentation using
the new toolchain with Hugo and AsciiDoctor.

To get more information about the new toolchain
please read the FreeBSD Documentation Project Primer[1],
Hugo docs[2] and AsciiDoctor docs[3].

Acknowledgment:
Benedict Reuschling <bcr@>
Glen Barber <gjb@>
Hiroki Sato <hrs@>
Li-Wen Hsu <lwhsu@>
Sean Chittenden <seanc@>
The FreeBSD Foundation

[1] https://docs.FreeBSD.org/en/books/fdp-primer/
[2] https://gohugo.io/documentation/
[3] https://docs.asciidoctor.org/home/

Approved by:    doceng, core
2021-01-26 00:31:29 +01:00

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 全体の内容、あるいはその前後の行に
強く依存しています。