• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Makefileの複数Targetの記述法)

Makefileの複数ターゲットの記述法

このQ&Aのポイント
  • Makefileにおける複数ターゲットの記述方法について教えてください。
  • 現在A, B, Cの複数のターゲットに対するMakefileを作成していますが、共通化する方法はありますか?
  • 共通化のためにpatdubdtやfor eachを使用しましたが、うまくいきませんでした。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「もう少し詳しく書くと」って書いてるけど, 元の質問文にある Makefile と #1 のお礼にある Makefile って, 全然違うんだよね.... さておき, 最悪 foreach や eval を駆使すればできるが, そこまでせずとも静的パターンルールを使って $(MAIN): %: %.o $(OBJ) gcc $^ -o $@ でいけそうな気はする.

runjump
質問者

お礼

最近Makefileの勉強を始めたものですみません。 コロンを二回続けれるのは初めて知りました。 これでいけました。 ありがとうございます。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

makeにもいくつか種類があるので、詳細はそのmakeのマニュアルとかを参考にしてほしいのですが 具体的に「どうやったら」「どううまくいかなった」のでしょう? このような時には、自動変数 $@,$< 等を使ったり、暗黙のルールを使ったりします。 A: A.cc B: B.cc C: C.cc %: %.cc   g++ %< -o $@ とか

runjump
質問者

お礼

ご回答ありがとうございます。 実はA,B,Cはメインプログラムです。 ライブラリを作成するのにsuffix ruleを用いています。もう少し詳しく書くと、 SRC = A.c B.c C.c MAIN = $(basename $(SRC)) OBJ = D.o F.o all:$(MAIN) A:A.o $(OBJ).o gcc $^ -o $@ B:B.o $(OBJ).o gcc $^ -o $@ C:C.o $(OBJ).o gcc $^ -o $@ %.o:%.c  gcc -c $< -o $@ のような感じです。 A,B,Cのルールを $(MAIN):$(patsubst %,%.o,$(MAIN)) $(OBJ) gcc $< -o $@ のようにすると A B C: A.o B.o C.o $(OBJ) のように展開されているようでmain fileが複数あるとのエラーが出ます。 また foreachを使ってうまくできないかと思ったのですが、こちらもとん挫してしまいました。 mainfileをmain_A.C, main_B.c, main_D.cなどとして、名前にmainを含むものは、、、といった書き方にすればよいのでしょうか?

関連するQ&A