たった1つのソースコードをコンパイルするのがめんどくさい

目的・目標

ライブラリなどの勉強を始めた頃は、1つのCソースファイルで完結するものが多い。
そんなちっさなプログラムのコンパイルをもっともっと楽にしたい

起きている問題

例えば Hello world を作るとこから実行まではだいたいこんな感じ

$ vim hello.c
$ gcc -Wall hello.c -o hello
$ ./hello

いちいち、gcc -Wall hello.c -o helloなんて打ちたいくない
なので、makefileを作ると...

$ vim hello.c
$ vim Makefile
$ make
$ ls
hello hello.c Makefile
$ ./hello

コンパイルは簡単になった。
しかし、新たにプログラムを書くと

$ ls
hello hello.c Makefile
$ vim hoge.c
$ vim Makefile
$ make hoge
$ ls
hello hello.c hoge hoge.c Makefile
$ ./hoge

コンパイルは変わらず簡単だ。
しかし、Makefileの編集から逃れられず、めんどくさい。

しかも、プログラムが増えるとMakefileが以下のようになってくる...

hello:
    $(CC) $(CFLAGS) hello.c -o $@
hoge:
    $(CC) $(CFLAGS) hoge.c -o $@
foo:
    $(CC) $(CFLAGS) foo.c -o $@

どんどん増える。
でも、違うところは"ソースファイル名"だけ

ダサい :-(

とりあえず打ったダサい対応策

[Shell Script] =Call=> [Makefile]

こんな感じに、Shell Script から make すれば Makefile の編集作業を消せるね。
打ち込むコマンドは ./make_script hello とか ./make_script hoge とか

これなら許せる。

Makefile

CFLAGS=-Wall -g

SRC=$(EXEC:=.c)

$(EXEC):
    $(CC) $(CFLAGS) $(SRC) -o $@

make_script

#/bin/bash

make EXEC=$1

思ってること

Makefileだけで同様のことができる気がしてならない...
なんかうまいことできる方法を知っている方教えてください...