From: Kenta Murata Date: 2011-03-01T19:46:38+09:00 Subject: [ruby-dev:43281] try_header in mkmf.rb on mswin32 むらたです。 現在、mswin32 において、try_cpp は成功するけど try_compile は失敗するような ヘッダファイルの存在を have_header を用いて正しく判定できません。 この問題は ruby-debug-base19 を gem install すると再現できます。 have_header("iseq.h") が失敗するためです。 しかし、mswin32 以外のアーキテクチャでは再現できません。 何故 mswin32 だけで失敗するのか調べてみたところ、mswin32 上では、 mkmf.rb で定義される try_header が try_compile のエイリアスになるようです。 これは、r21791 で中田さんが行なった修正で、ChangeLog によると 理由は -E を付けると CL が遅からということでした。 実際、try_header を try_cpp のエイリアスにすると問題は解決しましたが、 処理測度はとても遅くなってしまいました。 extconf.rb はとても遅くなってしまいますが、have_header の仕様を考えると try_header は try_cpp のエイリアスに戻すべきだと思います。如何でしょう? ほかにエレガントな解法はあるでしょうか? -- Kenta Murata Sent with Sparrow