GNU make の -include ― 2012年03月04日 03時22分32秒
-include
がある。include
は常にファイルを読み込み、ファイルが存在しない場合はエラーになる。-include
はファイルが存在する場合に読み込む。
この、条件式による読み込みが他の make には無い特有の動作になっている。これを用いる事により、動的に makefile の内容を変更させる時に幅を持たせることが容易になる。また、複数に分かれて書かれている makefile を複合して呼び出すことも可能になる。
単純な動作を組み合わせて例示する。
% cat Makefile
-include $(FILES)
まず、Makefile は一行のみ。
% head 1.mk 2.mk 3.mk
==> 1.mk <==
all ::
echo 1
==> 2.mk <==
all ::
echo 2
==> 3.mk <==
all ::
echo 3
そして、makefile を三つ準備した。判りやすい様にファイルの名前は、表示する数字と同じになっている。更に重要な点は ::
を用いてターゲットを作成している。二重コロンを用いることにより、同じ名前の複数のターゲットを別々の位置で定義できるようになる。
gmake への引数を変えることにより、任意の makefile を実行することが出来る。
% gmake FILES=1.mk
echo 1
1
% gmake FILES='3.mk 1.mk'
echo 3
3
echo 1
1
また、同じファイルを複数回読むことも出来る。
% gmake FILES='3.mk 1.mk 2.mk 1.mk'
echo 3
3
echo 1
1
echo 2
2
echo 1
1
これを応用すると、任意のコンパイラを使いたいときや、特定のライブラリだけ一時的に入れ換えたい時などに、自動で組み込むような makefile を作れる。
最近のコメント