vpathの使い方
vpathの基本
VPATH 変数はmake がファイルを探すディレクトリのリストです。このリストは必須項目とターゲットを探す際に使われますが、コマンドスクリプトに書かれているファイルには無効です。ディレクトリ のリストはUnix では空白またはコロンで、Windows では空白またはセミコロンで区切ります。空白の ほうが望ましい理由として、すべてのシステムで動作しコロンとセミコロンの起こす混乱を避けること ができます。またディレクトリは空白で区切られているほうが読みやすいものです。
VPATH 変数はファイル検索の問題を解決できたという点ではよいのですが、どちらかというと扱い にくい点もあります。make は目的のファイルを各ディレクトリから見つけ出そうとします。もし同じ 名前のファイルが VPATH で指定された複数の場所に存在した場合、make は最初のものを使います。 これが問題を引き起こす場合もあります。
vpath 命令は目的を達成するための、より適正な方法です。この命令の構文は次のとおりです。 vpath pattern directory-list
例で使用したVPATH はこのように書き換えることができます。
code:code.*
vpath %.c src
vpath %.l src
vpath %.h include
これで make に.c ファイルと.l ファイルは src ディレクトリから探し.h ファイルを include ディ レクトリから探すように指示することになります(必須項目のヘッダファイル名から include/を取 り除くことができます)。もっと複雑な状況では、この手法を使うことで多くの頭痛の種とデバッグ時 間を削減することができます。
カレントディレクトリ以外に置かれたソースファイルを見つけるという問題を解決するために vpath を使いました。ソースファイルはソースツリーに、オブジェクトファイルは別のバイナリツリー に書かれているようなアプリケーションをどのようにして構築するかという問題は、関連してはいます が別の問題です。vpath を適正に使うことにより、この新しい問題にも対処できますが、やるべきこ とはすぐに複雑化しvpath 単独では間に合わなくなってしまいます。この問題については後述します。