本文へスキップ
BecomeCoder

Makefile / makeコース · 第1章 Makefileとは · レッスン1

makeを動かす ― 最初のMakefile

ブラウザで完結

導入

「ビルドの自動化」と言われてもピンと来ないかもしれません。まずは make が何をするのかを、いちばん小さな Makefile で体感しましょう。やることは1つ、「make と打つと Makefile に書いた通りにコマンドが実行される」を見るだけです。

説明

Makefile の最小形は、次の3行です。

hello:
	echo "Hello, Make!"
  • 1行目の hello:ターゲット(作りたいもの/実行したい名前)。
  • 2行目の echo "Hello, Make!"レシピ(そのために実行するコマンド)。

ここで超重要なルールが1つあります。レシピの行頭は、スペースではなく「タブ(Tab)」で字下げすること。これは make の長い歴史から来た決まりで、初心者が必ず一度はハマる罠です(このエディタでは Tab キーを押すと本物のタブ文字が入ります)。

make を実行すると、make は「実行するコマンド行」を画面に出してから、そのコマンドを走らせます。だから echo "Hello, Make!" という行と、その結果の Hello, Make! の2行が出ます。

やってみよう

下の端末で make と打って Enter を押してみましょう。次に、レシピの行の echoecho "makeは楽しい" に書き換えて、もう一度 make。表示が変わるはずです。レシピ行の行頭がタブになっているかも意識してみてください。

演習

Makefile のレシピを書き換えて、make したときに build start という文字が表示されるようにしてみましょう。

ヒント1を見る

レシピ行(タブ字下げの行)を echo "build start" にします。

ヒント2を見る

行頭がスペースだと 区切り文字がありません というエラーになります。Tab キーで字下げし直してください。

実際に動かしてみよう

上のエディタが Makefile、下が端末です。Makefile を確かめたら端末に `make` と打って Enter を押すと、どのレシピがどの順で走るかが表示されます。`ls` で作業中のファイル(main.c などが最初から置いてあります)、`touch main.c` のあと `make` で差分ビルドの様子、`make -n` で「実行せず何が走るか」を確かめられます。各レッスンは毎回まっさらな状態から始まり、「最初からやり直す」でいつでも戻せます。

Makefile + make(シミュレート)

Makefile を書いて make を試せる学習用環境を読み込みます(本物のGNU Makeではなく、依存解決とタイムスタンプ再ビルドを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。