3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ネタ?】Makefileの中身をシェルスクリプト100%で書いてみた

Last updated at Posted at 2021-04-02

make はタスクランナーではないと言われても、make [なんちゃら] 一つで定形処理が実行できるのは便利なわけですよ。プロジェクトに Makefile があるだけで make コマンドで何かが簡単に実行できるんだと伝えられるわけですよ。でも Makefile はタスクランナーとしては書きづらいからシェルスクリプトを埋め込むわけですよ。そうすると Makefile の文法とシェルスクリプトの文法が混ざって読みづらくなるわけですよ。だから結局 Makefile から外部のシェルスクリプトを呼び出すことになるわけですよ。

それなら、もういっそのこと Makefile の中身をシェルスクリプト100%で書けばよくね?と思ったのでやってみました。以下のコードはシェルスクリプトですが Makefile としても解釈することができます。

Makefile
#!/bin/sh

: <<-'HERE'
.PHONY: build test
build:
	@sh Makefile $@
test:
	@sh Makefile $@
:
	HERE

	build() {
		echo "building..."
	}

	test() {
		echo "testing..."
	}

	"$@"
  • Makefile なのでインデントはタブです。
  • <<- と書けばヒアドキュメントの終わりをタブでインデントすることが出来ます。
  • make の補完もたぶんちゃんと動きます。
  • Makefile に実行権限をつけて make コマンドなしに実行することができます。
  • 通常の Makefile のコードも混ぜられます。
  • 全ての文法が正しく使えるかはわかりません。

ネタというわりに使える気がしてならない。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?