公式リファレンスは↑
サードパーティーのリファレンス的資料:
使えるMakefileの例
.PHONY: default build clean
default: build
clean:
rm -rf dist/
timestamp:
date +%s > timestamp
build: timestamp another-file
some_build_command
Tips:
参考:
変数定義のやり方について。
“=” と “:=” は違う。
src = foo.c
ymd := $(shell date +%Y%m%d)
参考:
makeを実行しているプロセスのカレントディレクトリを返す。
参考:
ループ実行
https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
ファイルを生成しないやつ
.PHONY: clean
clean:
rm *.o tmp
複数の.PHONYターゲットをまとめて記述することもできる
.PHONY: all clean deps
7 Conditional Parts of Makefiles
Example:
libs_for_gcc = -lgnu
normal_libs =
foo: $(objects)
ifeq ($(CC),gcc)
$(CC) -o foo $(objects) $(libs_for_gcc)
else
$(CC) -o foo $(objects) $(normal_libs)
endif
$
のエスケープシェルの文脈で $
を使いたいときは $$
と記すことで実現できる。
Examples:
time:
now=$$(date); echo $$now
参考:
公式マニュアル:
SYNOPSIS:
# デフォルトのタスク(=最上部で定義されたタスク)を実行
make
# タスク名を指定して実行。複数指定可
make task1 [task2 ...]
# Makefileを指定する
make -f|--file <Makefile>
# dry-run
make -n|--dry-run
# 変数の設定
# Makefile内で定義されていれば、オーバーライドする
make CFLAGS=-g
その他のオプション:
オプション | 意味 |
---|---|
-j|--jobs[=N] | 同時実行数を指定。See 5.4 Parallel Execution |
-e|--environment-overrides | 環境変数をオーバーライドする |
-d | デバッグ情報を表示。 --debug=a と同じ |
--trace | 実行時のトレース情報を表示する |
-s|--silent|--quiet | 実行されるタスクをプリントしない |
-h|--help | ヘルプ表示 |
-v|--version | バージョン表示 |
BUILD_DIR := path/to/build
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
all: $(BUILD_DIR)
cd $(BUILD_DIR) && some_commands
.PHONY: all
環境変数はMakeの変数として参照できる。例: $(CFLAGS)
参考:
make CFAGS=-g
みたいに変数経由で渡すことになりそう。
参考:
pwd:
pwd
echo $(shell pwd)
echo $(PWD)
echo $$PWD
echo $(CURDIR)
実行例:
$ make
pwd
/home/progrhyme/tmp/make
echo /home/progrhyme/tmp/make
/home/progrhyme/tmp/make
echo /home/progrhyme/tmp/make
/home/progrhyme/tmp/make
echo $PWD
/home/progrhyme/tmp/make
echo /home/progrhyme/tmp/make
/home/progrhyme/tmp/make