会員登録すると
学習することができます。
会員登録する(無料)
登録済みの方はこちら
ログイン

Make の本領 ― 作り直さない仕組み

目安学習時間 15分

課題

全問正解でレクチャー完了です。

【問題1】

「out.txt: src.txt」と書いた状態で、何も変更せずに2回続けて make を実行するとどうなりますか。

[選択肢]

【問題2】

Make がシェルスクリプトより向いている場面はどれですか。

[選択肢]
会員登録すると
学習することができます。
会員登録する(無料)

学ぶ目的

Make は「必要なときだけ」実行する

ここが Make とシェルスクリプトの決定的な違いです。Make はファイルの更新時刻を見比べて、必要がなければ実行しません

out.txt: src.txt
    @echo "src.txt から out.txt を作ります"
    @tr a-z A-Z < src.txt > out.txt

out.txt: src.txt は「out.txt は src.txt から作られる」という依存関係の宣言です。

3回実行して確かめる

1回目。out.txt がまだ無いので作られます。

src.txt から out.txt を作ります

2回目。何も変えずにもう一度実行します。

make: `out.txt' is up to date.

実行されません。 src.txt が out.txt より新しくないからです。

3回目。src.txt を更新してから実行します。

src.txt から out.txt を作ります

また作られました。入力が変わったときだけ動く——これが Make の本領です。

シェルスクリプトとの使い分け

向いていること
シェルスクリプト 上から順に実行する手順。毎回同じことをする
Make 入力から出力を作る作業。変わっていなければ飛ばしたいとき

時間のかかる処理(ビルド、データの変換、集計)では、この差が効きます。毎回やり直す必要がないものを飛ばせるからです。

AIに頼むときの言い方

「この作業をMakefileにして」だけでは、ただのコマンド置き場になります。何から何を作るのかを伝えます。「src.txt から out.txt を作る。src.txt が変わったときだけ作り直す」のように。

このレクチャーで学ぶこと

  • 依存関係の書き方
  • 更新時刻を見て飛ばす仕組み
  • シェルスクリプトとの使い分け

質問

まだ質問は投稿されていません。

質問投稿

ログイン後に質問の投稿ができます。