プログラミングユーティリティ

SCCS ファイルの自動取り出し

依存関係リスト中にソースファイルの名前が指定されている場合は、make はそのソースファイルを他のターゲットと同様に処理します。この場合は、ソースファイルはディレクトリ内にあることが前提になっているため、ソースファイルのエントリをメークファイルに追加する必要はありません。

ターゲットに依存関係がなく、ターゲットがディレクトリ内にある場合は、make はファイルを最新のものとみなします。ただしソースファイルが SCCS 管理されている場合は、make はさらにいくつかの検査を行い、ソースファイルが最新であることを確認します。ファイルがないあるいは履歴ファイルの方が新しい場合は、make は自動的に以下のコマンドを実行して、最新のバージョンを取り出します。

sccs get -s filename -Gfilename

注 -

他のバージョンの make では、SCCS ファイルの自動取り出しは特定の暗黙の規則だけで使用できる機能です。また旧バージョンとは異なり、このバージョンの make は履歴ファイルを sccs ディレクトリ内でのみ検索します。作業中のディレクトリ内の履歴ファイルは無視されます。


ただしソースファイルが書き込み可能な場合は、make は新しいバージョンを取り出しません。

$ ls SCCS/* 
SCCS/s.functions.c
$ rm -f functions.c 
$ make functions 
sccs get -s functions.c -Gfunctions.c 
cc -o functions functions.c 

make は、取り出したバージョンのタイムスタンプと履歴ファイルのタイムスタンプを調べます。ディレクトリ内のバージョンが最後にチェックインされた最新バージョンかどうかは調べません。したがって、他のユーザーが日付を指定してファイルを取り出した (sccs get -c) 場合でも、make はそれが最新のバージョンであるかどうかを調べないので、最新でないバージョンのプログラムまたはオブジェクトファイルが構築されることがあります。確実に最新バージョンを構築するには、sccs get SCCS または sccs clean のいずれかのコマンドを実行してから make を実行します。

SCCS ファイル取り出しの抑止

SCCS ファイルの取り出しコマンドは、デフォルトのメークファイル (/usr/share/lib/make/make.rule) の .SCCS_GET という特殊ターゲット用の規則で指定されています。SCCS ファイルの自動取り出しを抑止するには、メークファイルでこのターゲットのエントリに空の規則を指定します。

# Suppress sccs retrieval. 
.SCCS_GET: