2008年5月29日木曜日

make 3.80 と 3.81

cygwin ベースに作った開発環境でビルド時にエラーが出るPCがあり、かなりはまりました。

m4 で処理するファイルが大量にあり、
内部で他のファイルを include している関係で
ファイルの依存関係を作成するツールをperlで自作していて、
そこでエラーが発生していたので、
まずそこから手をつけました。

最初は、メイクファイルに含めるファイルの依存関係リストの行頭が空白になっていたので、
それかと思いタブに変えてみましたが関係ないようです。
そこで自動生成した依存関係リストを手動で変更してビルドかけていくと、
どうやらフルパス指定のファイルが悪さをしていることが分かり、
"c:\" を "/cygdrive/c/" に変更すればいいようです。
依存関係生成スクリプトをちょいと触って解決です。

が、今度はgccの生成した依存関係リストで引っかかります。
先と同様の理由です。
sed でも使って加工してしまえばそれですむのですが、
これは何かおかしいと思うようになり、ググッてみました。
どうやらcygwin に含まれる gnu make のバージョンが 3.80 から 3.81 にかなり前に変わったらしく、
この段階で、 DOSスタイルのドライブ指定フルパスが通らなくなったようです。
しかも古いバージョンはcygwinからはすでに手に入らない…

同様に困ってる方がいるかもしれませんので、ここにおいておきました。
解凍して得られる make.exe と cygintl-2.dll をcygwinの "/bin" にコピーすれば解決できるでしょう。
まあ、これを機会にUNIXスタイルのフルパスに統一するように考えることにします。

0 件のコメント:

コメントを投稿