複数の実行ファイルを生成するMakefileの書き方
課題で学んだことを一つメモ。
今まで複数の実行ファイルを一気に生成するMakefileの書き方が分からなかったのですが、その方法が分かりました。普通は↓のようにMakefileを書いてから、
#Makefile TARGET1: hoge.c gcc -o TARGET1 -Wall hoge.c TARGET2: moge.c gcc -o TARGET2 -Wall moge.c
makeコマンドの引数に個別にTARGETを指定してコンパイルすると思います。
$ make TARGET1 TARGET2
これだと一々TARGETを打ち込まなきゃいけなくてめんどくさい!そこで使うのが↓の方法です。
#Makefile all: TARGET1 TARGET2 TARGET1: hoge.c gcc -o TARGET1 -Wall hoge.c TARGET2: moge.c gcc -o TARGET2 -Wall moge.c
makeは引数なしで実行した場合、Makefile中の最初のTARGETのみコンパイルします。これを逆手にとって、最初のTARGETのコンパイルに他の全てのTARGETのコンパイルが必要であると指定してやればいいのです。上記の例では、allがダミーのTARGETになります。allをコンパイルするにはTARGET1とTARGET2が必要ということになるので、無事全てのTARGETがコンパイルされることになります。
ちなみにallの扱いはどうなるかというと、コンパイル方法が指定されていないので無視されます。作業環境によっては「make:'all'に対して行うべき事はありません。」みたいな警告が出るかもしれませんが、それは無視しましょう。
さってと、続きをやるかー
※インデントは全て[TAB]に直してください。エラーが出ます。