- ベストアンサー
makefileマクロ定義とgainen.cの更新方法
- makefileマクロ定義とgainen.cの更新方法を解説します。
- Makefileの内容やgainen.cの関連性について理解していない場合でも、簡単な手順でコンパイルする方法があります。
- この記事では、Makefileの構造やgainen.cの依存関係を説明し、コンパイルの手順を具体的に示します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>gainen.cを更新したとするとどのようにmakeでコンパイルしたらいいでしょうか? Makefileが置いてあるフォルダに移動して % make または % make all または % make suiron >Makefileはよくわからないです よく判らなくても簡単にmakeする為にあるのがMakefile。 Makefileの中身が間違ってないのなら、そのまま使えば問題無い。 て言うか、Makefileが良く判らないなら、理解出来るまで下手にMakefileを変更しない事。 Makefileは「ファイルの依存関係」と「依存されたファイルと依存するファイルの新旧の関係を正常な関係に維持する為のコマンドライン」が書いてあるだけなので、意外と簡単なんだが。 つまり ・実行ファイルはオブジェクトファイル(.o)よりも新しくなくてはならない 例) $(CMD) : $(OBJS) ・オブジェクトファイル(.o)はソースファイル(.c)よりも新しくなくてはならない 例) .c.o : ・オブジェクトファイル(.o)はヘッダファイル(.h)よりも新しくなくてはならない 例) gainen.o: gainen.h gbank.o : gainen.h symbol.o: gainen.h symbol.h atom.o : gainen.h symbol.h atom.h rule.o : gainen.h symbol.h atom.h rule.h subgoal.o : gainen.h symbol.h atom.h rule.h subgoal.h resol.o : symbol.h atom.h rule.h subgoal.h io.o : symbol.h atom.h rule.h subgoal.h suiron.o: gainen.h symbol.h atom.h rule.h subgoal.h viewpoint.o : gainen.h symbol.h atom.h rule.h subgoal.h って書いてある。 そして、その次の行に「新しくする時に実行すべきコマンドライン」が書いてある。「新しくする時に実行すべき事が何もない」なら「コマンドライン」は書かれない。 例えば $(CMD) : $(OBJS) には $(CC) -o $@ $(OBJS) -lm $(DEBUG) を実行するように書いてある。 例えば gainen.o: gainen.h の次の行にコマンドラインが無いので、特に何もしない。単に、gainen.oとgainen.hのどっちが古いか調べ、gainen.oが古ければgainen.oを作り直そうとするだけ。 悩むほど難しくは無いのだけど。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
gainen.c の変更によって影響を受けるものをコンパイルするだけなら単に make でいいはず. そうでないなら「どのような結果が欲しいのか」をちゃんと書いてください. しかしひどい Makefile だなぁ. 自分と関係ないファイルまで消しちゃうのか....
お礼
ありがとうございました
お礼
ご丁寧な回答ありがとうございました。参考になります。マクロ定義で書いてあったのでわかりそうでわからないようなきがします。