make makes many problemsat TECHmake makes many problems - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト550:548 05/12/29 19:06:14 >>549 依存関係を更新しないと、コンパイルが必要なファイルが分からないので コンパイルが成功した時に依存関係が更新されても、手遅れではないでしょうか? 今、それぞれに無理やりディレクトリを付与してしまおうと考えていて、 ここまで来ました。 depend: $(foreach IT,$(SRCS),\ $(RM) $(IT).dep; echo "$(dir $(IT))" > $(IT).dep; g++ -MM $(IT) >> $(IT).dep;\ ) このあとcatか何かでファイルを纏めればいいと思うのですが、問題は echo "$(dir $(IT))" > $(IT).dep; の部分で、出力結果に改行が入ってしまいます。 この改行を入れない方法はないでしょうか? 551:デフォルトの名無しさん 05/12/29 21:50:13 VPATH 552:549 05/12/30 00:17:51 >>550 一番最初は .o ファイルが存在しないから、 ヘッダの依存関係に関係なくコンパイルが必要なことがわかる。 553:548 05/12/30 10:44:49 >>551 VPATHだと、SRCSにわざと含めていない、 別ディレクトリ内の同名ファイルがあると誤動作するんです。 >>552 既に .oファイルが存在する状態でソースコードを編集したら……? あーあ、 .o よりソースのタイムスタンプが若いからコンパイル対象になるので 無問題なんですね……。 書き込みを拝見する前に力技で解決してしまいました。 力技とはこれ echoex.c #include <stdio.h> int main(int argc, char** argv) { for (int i = 1; i < argc; ++i) { if (i == 1) { printf("%s", argv[i]); } else { printf(" %s", argv[i]); } } return 0; } これをコンパイルして実行パスを通しておいて depend: $(foreach IT,$(SRCS),\ $(RM) $(IT).dep; echoex "$(dir $(IT))" > $(IT).dep; g++ -MM $(IT) >> $(IT).dep;\ ) cat $(addsuffix .dep,$(SRCS)) > depend.inc $(RM) $(addsuffix .dep,$(SRCS)) これで……解決? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch