ここ数回にわたり、GNU makeの関数について取り上げている。今回は、ファイルの読み書きを行うfile関数を紹介しよう。

ファイル関数

GNU makeには、ファイルのデータの読み書きを行うために「file」という関数が用意されている。これは、GNU makeに独特の機能と考えて良いかもしれない。ファイルへの読み書きはシェルが担当することが多く、Makefileからmakeが直接的に行うというのは、GNU makeに特有の機能の一つと言ってもいいんじゃないかと思う。

file関数のシンタックスなどは、次のようになっている。

関数 シンタックス
file $(file < ファイルパス)
$(file > ファイルパス,テキスト)
$(file >> ファイルパス,テキスト)
関数 内容
file ファイルからテキストの読み込み、ファイルへテキストの上書き、ファイルへテキストの追記を行うための関数
操作指定 内容
< ファイルの読み込み
> ファイルへ上書き
>> ファイルへ追記

file関数は、第1引数として「<」「>」「>>」の値のどれかを指定するというのが特徴的だ。この指定はシェルのリダイレクトと同じであり、それぞれ「読み込み」「上書き」「追記」を意味する。

そして第2引数にはファイルパスを指定する。書き込む場合には、書き込む文字列が必要になるので、第2引数に「,」区切りでさらに書き込む文字列も指定することになる。関数の使い方としても、結構独特だ。

ファイルの読み書きと言うと、その過程において改行や空白がどのような扱いになるのかが気になるところだ。そもそも、どういった用途でこのfile関数を使うのかも気になるだろう。この辺りは、実際に動作するMakefileを見ながら学んでいくのが早いので、早速サンプルをご覧いただきたい。