たった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
とか
これなら許せる。
CFLAGS=-Wall -g SRC=$(EXEC:=.c) $(EXEC): $(CC) $(CFLAGS) $(SRC) -o $@
make_script
#/bin/bash make EXEC=$1
思ってること
Makefileだけで同様のことができる気がしてならない...
なんかうまいことできる方法を知っている方教えてください...