• ベストアンサー

Makefileについて

makeファイルの書き方で悩んでいます。 makeファイルは書いたことがなく、ほとんど丸写しです。 私がしたいのは、 (1)run:部分で削除するファイルがなかった場合、エラーとなり次の行へ進みません。なくても(エラーでも/エラー回避して)次の行へ進む方法が知りたいです。 もうひとつは(2)run:部分で、cleanを実行し、makeしてrunを実行させる方法が知りたいです。 --------------以下、サンプルMakefileです。 CC = gcc OBJS = main.o sub.o PROG = test.exe .c.o: $(CC) -c $< -o $@ $(PROG) : $(OBJS) $(CC) $(OBJS) -o $(PROG) $(OBJS) : Makefile clean: rm -f *.o $(PROG) run: rm *.log <---- (1)ここでファイルがないとエラーで止まる $(PROG) all:   <-- (2)[clean]を実行して、makeして、[run]を実行させたい 以上です。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

>(1)run:部分で削除するファイルがなかった場合、エラーとなり次の行へ進みません。なくても(エラーでも/エラー回避して)次の行へ進む方法が知りたいです。 Makefileを知らないのはともかく、基本的なコマンドも知らないとつらいです。この場合、rmコマンド。 rm -f *.log でファイルが無くてもエラーになりません。 >(2)run:部分で、cleanを実行し、makeしてrunを実行させる方法が知りたいです。 make all すると、 make clean;make;make run と同じにしたいということでしょうか。 all: clean $(PROG) run と、コロンの後に並べて書きます。毎回make cleanするのは無駄だと思いますよ。

その他の回答 (1)

  • _himajin_
  • ベストアンサー率65% (128/195)
回答No.2

書いてる間に#1さんが答えてくれたようなので若干補足 # うろ覚えな記憶で書いてるので間違ってるかもしれないけど… $(OBJS) : Makefile これは要らない気がします。あっても問題はありませんが。 run: <TAB>-rm *.log - を追加するとコマンドがエラーで返ってきても止まらなくなります。 エラーを出さない方法でも良いんですが、知っていて損はないはず。 all: clean $(PROG) run [clean]を実行して、[$(PROG)]を実行して、[run]を実行する。 このように、ファイルだけではなく、ルールにも依存することが出来ます。

関連するQ&A