by shigemk2

当面は技術的なことしか書かない

Makefileについて小さく

Makefile の書き方 (C 言語) — WTOPIA v1.0 documentation

基本的な書き方

ターゲット名: 依存ファイル名 1 依存ファイル名 2 依存ファイル名 3
              コマンド行 1
              コマンド行 2
              コマンド行 3

実行

make ターゲット名

ポイント

  • make というコマンドを実行するだけで、自動的にコマンドを実行してコンパイルしてくれる
  • 出力:入力 という関係
  • インデントはタブ文字 で書かないと作動しない

Makefileの例

all:
    $(MAKE) -C pdp11-10

7run.out: 7runall.sh
    ./7runall.sh > $@

interpreter.out: pdp11-10/10-2-execute.fsx pdp11-10/10-2.fsx
    cd pdp11-10/ && fsharpi 10-2-execute.fsx > ../$@

# make test
# ファイルが存在するかチェックが走る
# ファイルが存在しなかったら7run.out もしくはinterpreter.out を実行する
# ファイルが存在しても依存しているファイルが更新されている場合は実行し直す
# 故に毎回make cleanする必要はない
test: 7run.out interpreter.out
    diff -u 7run.out interpreter.out

# make clean
clean:
    rm -f 7run.out interpreter.out

たとえば、

$ make 7run.out

ってやると、./7runall.sh > $@が実行される。

subsystem:
      $(MAKE) -C subdir

ってやると、サブディレにあるMakefileが実行される。ポイントは-C。 $(MAKE)と書かずにmakeと書くと、どのmakeが実行されるのかわからない。

shigemk2/compiler · GitHub