From: WATANABE Hirofumi Date: 2003-09-29T01:48:46+09:00 Subject: [ruby-dev:21425] Re: Makefile.inのlex.c わたなべです。 Yukihiro Matsumoto writes: > |OpenBSD 3.3のmakeだとsrcdirと別のディレクトリでmakeすると > |lex.cを作ろうとして一度とまってしまったので、$(srcdir)/lex.cに > |変更した方が良いのではないでしょうか? > > 「とまってしまった」のがどうとまったのかわからないのですが、 デフォルトではgperfがインストールされてないからエラーになる という意味です。本来ならVPATHがあるからlex.cを作らないと思う んですが、OpenBSDとFreeBSDのmakeはターゲットはVPATHを見ない ようです。NetBSDのmakeはGNU makeと同じで、VPATHが有効になり ます。 % mkdir ruby % touch ruby/keywords; sleep 1; touch ruby/lex.c % mkdir tmp % cd tmp % cat >Makefile VPATH = ../ruby lex.c: keywords; @echo '$@ $>' % make と実行すると、NetBSDは `lex.c' is up to date. となり、OpenBSDとFreeBSDは lex.c ../ruby/keywords となります。touch ../ruby/keywordsするとNetBSDは ../ruby/lex.c ../ruby/keywords となるので、VPATHが有効になってるのがわかります。 > 別ディレクトリでmakeしている場合には新たに生成するファイルは > 元のディレクトリに作ってはいけないんではないでしょうか。パー > ミッションがない場合もありますし。 だとするとconfigureはsrcdirに作るようにMakefile.inに書かれて いるのでまずいですね。 -- わたなべひろふみ