子 Makefile をうまく使うメモ

一人アドベントカレンダー 2014 10 日目 by @takkyuuplayer

環境設定をmakeコマンドでやりたいときに アプリ毎に子Makefileを作って、 親Makefileからはそれを呼び出すだけにしたい。

  • current_dir はどうやって取ればいいの?
  • Makefileから親Makefileで定義した変数とか使いたい

っていう周りを解決したのでメモ

Makefile

mkfile_path=$(abspath $(lastword $(MAKEFILE_LIST)))
current_dir=$(notdir $(patsubst %/,%,$(dir $(mkfile_path))))
export SRC_ROOT=${current_dir}/src # accessible from child Makefile
export WEB_ROOT=/web/apps/

all: setup

setup: setup_common
  cd ${SRC_ROOT}/app1 && $(make)
  cd ${SRC_ROOT}/app2 && $(make)
  cd ${SRC_ROOT}/app3 && $(make)

setup_common:
  ...
DOCUMENT_ROOT=${WEB_ROOT}/appX
SRC_DIR=${SRC_ROOT}/appX

all: setup

setup:
    mkdir -p ${DOCUMENT_ROOT}
    ln -s ${DOCUMENT_ROOT}/css ${SRC_DIR}/css
    ln -s ${DOCUMENT_ROOT}/js  ${SRC_DIR}/js

次回予告

明日の担当も @takkyuuplayer です。