makeの使い方がまだいまいちわからない者です。まず以下のようなディレクトリツリーがあるとします。
lang
1directory - source/ - a.cpp 2 - b.cpp 3 - ... 4 5 - lib/ - a.o 6 - b.o 7 - ... 8 9 - makefile
この条件で、source/にある.cppをlib/%.oみたいに出力したいです。makefileと同じディレクトリにある.cppを同じディレクトリに出力するなら
lang
1.cpp.o: 2 g++ -c $< -I ...
でできることは知っています。この書き方を踏まえて、イメージとしては、次のように書きたいです。
lang
1source/%.cpp lib/%.o: //この構文は試してはいませんがこんな構文はありませんよね。イメージです。 2 g++ -c $< -o lib/%.o //これもイメージです。
それに加えてもう一つ、a.exeに依存されている$(OBJ)マクロの定義を"lib/にある.oファイルすべて"という風に定義したいです。イメージをを次に書きます。
lang
1OBJ = lib/の中にあるすべての.oファイル、個別のファイル名を書くのは面倒 2 3a.exe: $(OBJ) //$@はa.exeを、$^はOBJ(すべての.o)を指していると- 4 g++ -o $@ $^ //-認識しておりますが、間違っていたらご指摘ください。
つまり、ファイルを拡張子ごとに別々のディレクトリにセットしてmakeすればファイルの増減に関係なく実行ファイルが出来上がる凡庸的なmakefileを書きたいということです。もちろんその完成形を完成させて教えろと言っているのではなくて、上記の二点に関して答えを教えてほしいということです。makeの関数は、addprefixとwildcardだけ知っています。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー