
現在A,B,Cの複数のターゲットに対する以下のようなMakefileをかいております。
SRC = A.cc B.cc C.cc
TGT = $(basename $(SRC))
all:TGT
A: A.cc
g++ A.cc -o A
B: B.cc
g++ B.cc -o B
C: C.cc
g++ C.cc -o C
A,B,Cに対する動作は同じであるため共通化して書きたいのですが、何か良い方法はありますでしょうか?
patdubdt, for each等を用いて記述しようとしましたがうまくいきませんでした。
ご存知の方おられましたらご教授よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
「もう少し詳しく書くと」って書いてるけど, 元の質問文にある Makefile と #1 のお礼にある Makefile って, 全然違うんだよね....
さておき, 最悪 foreach や eval を駆使すればできるが, そこまでせずとも静的パターンルールを使って
$(MAIN): %: %.o $(OBJ)
gcc $^ -o $@
でいけそうな気はする.
最近Makefileの勉強を始めたものですみません。
コロンを二回続けれるのは初めて知りました。
これでいけました。
ありがとうございます。
No.1
- 回答日時:
makeにもいくつか種類があるので、詳細はそのmakeのマニュアルとかを参考にしてほしいのですが
具体的に「どうやったら」「どううまくいかなった」のでしょう?
このような時には、自動変数 $@,$< 等を使ったり、暗黙のルールを使ったりします。
A: A.cc
B: B.cc
C: C.cc
%: %.cc
g++ %< -o $@
とか
ご回答ありがとうございます。
実は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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルデーターの並び替え 5 2022/08/06 09:59
- ラジコン・ミニ四駆 タミヤブラシレスモーターTBLM02SはCC-02シャーシに装着できないのでしょうか?タミヤHPには 1 2022/09/11 10:07
- その他(ビジネス・キャリア) ビジネスメールの書き方についての質問ですが、メールの書き出し部分で、Toの方を上の行に書き、CCの方 3 2022/04/05 16:27
- Excel(エクセル) 【!】Excel 2つの条件付き書式が反映されません。。 5 2023/07/14 16:47
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2022/10/12 12:55
- その他(メールソフト・メールサービス) メールのCCについて 5 2022/07/27 16:04
- CAD・DTP InDesignCS6をCCにアップデートすべきか 2 2023/01/08 03:17
- iPhone(アイフォーン) gmail をpcとiPhoneで使っていますが、PCから送ったメールがiphoneに反映されません 3 2023/07/25 10:57
- Gmail メーラーのThunderbirdの送信機能に関する質問です 3 2022/07/10 10:58
- Android(アンドロイド) Androidの【CCクリーナー】について Androidスマホの【CCクリーナー】についての質問を 3 2022/10/24 10:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windowsで、画面の上部の「ファ...
-
「過ごし」と「過し」と どち...
-
プライベートビエラのモニター...
-
四字熟語教えて!
-
文字数に合わせて、コントロー...
-
13ステラswオーバーホール何処...
-
「三方背」の読み方
-
車のタイヤ痕を消す方法教えて...
-
JA16SJIS とは?
-
酒の細道に出ているお店
-
文字を数字に置き換えて表示?e...
-
歌うカルガモぬいぐるみ
-
2ちゃんの顔文字を教えてください
-
レーザージュークについて。
-
建設関係で質問です。
-
埼玉県の朝霞や新座あたりでコ...
-
JR津田沼駅の電話番号
-
マイレージの確認方法は
-
新神戸駅から加納町にある・・・
-
DELL Support Assist アンイン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windowsで、画面の上部の「ファ...
-
「過ごし」と「過し」と どち...
-
13ステラswオーバーホール何処...
-
花壇にネモフィラを植えている...
-
「三方背」の読み方
-
文字数に合わせて、コントロー...
-
金戒光明寺から岡崎神社に最短...
-
コピーのインクが写ってしまっ...
-
水稲培土について
-
プライベートビエラのモニター...
-
JR津田沼駅の電話番号
-
四字熟語教えて!
-
埼玉県の朝霞や新座あたりでコ...
-
エクセル・「縮小して全体を表...
-
関西でウィークリーマンション...
-
文字を数字に置き換えて表示?e...
-
JA16SJIS とは?
-
歌うカルガモぬいぐるみ
-
「有限会社 八八粍」 の読み方
-
リニアメーターとは・・・?
おすすめ情報