make3.81の罠
cygwinのmakeを使ってる人なら、はまりがちな罠の一つに、make3.80とmake3.81の差がある。
他にも細かい差異はあるんだろうけど、一番困るのが、
Makefileの中に記述するパス形式に、ドライブレター指定を入れちゃいかん!
ってところ。
具体的には、
hoge.exe: hoge.o D:/lib/hoge.lib $(CC) -o $@ $<
と書けない(make3.80だと、大丈夫だった)。
かといって、
hoge.exe: hoge.o /cygdrive/d/lib/hoge.lib $(CC) -o $@ $<
と書くと、$(CC)がcygwinのパスを理解できない場合、終わる。
hoge.exe: hoge.o /cygdrive/d/lib/hoge.lib $(CC) -o $@ $(shell cygpath -m $<)
と書くしかない。めんどい。
勿論、全てを相対パスで記述できるなら問題ないのだが、難しい場合もあると思う。
そこで、弊社のプログラマがある方法を思いついた(ここまで、自分で思いついたかのように書いてきたけど、実は他人の褌w)。
“Windowsツールでもcygwinのパスでアクセスできるようにすればいいんじゃね?”
と。
で、以下の方法。
1) まず、ドライブ直下に、(Dドライブなら)D:\cygdrive\dというフォルダを掘る
2) 『コンピュータの管理』->『ディスクの管理』から『ドライブ文字とパスの変更』を選び、『追加』をクリックして、先ほど作ったフォルダにマウントしてやる
3) こんな状態になるはず
4) 試しにDOS窓(cmd.exe)からアクセスしてみる
5) cygwinのシェルからもアクセスしてみる
ちゃんと両方とも、D:\にアクセスできてるのを確認。
これで、
hoge.exe: hoge.o /cygdrive/d/lib/hoge.lib $(CC) -o $@ $<
と書いちゃってから、“うわーん、$(CC)がcygwinのパスを理解してくれないよー”と判明しても大丈夫。
当然ながら、ドライブ指定を省略しているので、同一ドライブ内のアクセスでないとダメ(と思ったけど、マウント方法を工夫すれば対応できるね)。
いちいち設定しないといけないのが面倒だけど、こういう方法もあるって事で……。
Comments
Leave a Reply
Status
-
Recent Entries
Ads
Categories
-
Recent Comments
- METAL GEAR SOLID PEACE WALKER に PetchyKo より
- typePでコードを書く に k-ya より
- typePでコードを書く に shinji より
- 俺のキャバリアフォルダが火を噴かない に k-ya より
- 俺のキャバリアフォルダが火を噴かない に みた より
Tags
ガジェット コンピュータ サウンド ネット ボードゲーム 馬 ActionScript Books C/C++ Car Develop Dogs Eating/Drinking English Event Flash Game Grooming Health iPhone Life Local Lua Mac Movies Music Nature NDS/NDSi Objective-C/C++ OS ParserGenerator PHP PS2 PS3 Ruby Script Server Sports SQLite3 Squirrel SS Subversion Toys Trip Wii- ▼2010 (8)
- ►2009 (45)
- ►2008 (219)
- ►2007 (231)
- ►2006 (48)
別館- "8.当社は、本サービス上のエラーや、ウィルス侵入がないこと、その他安全な本サービスの進行に関して一切保証しないものとします。"
- "181 名前:おさかなくわえた名無しさん[sage] 投稿日:2009/12/01(火) 18:14:20..."
- "39 名前:以下、名無しにかわりましてVIPがお送りします[] 投稿日:2010/05/01(土) 11:41:42.87 ID:wFgE/itb0 そこでロードスターですよ! 58..."
- "また、開発工数の問題だけでなく、開発コストも価格破壊が起きています。例えば、「pixiv」と言うイラストサイトをご存じでしょうか。ここは、イラストの上手な多くの一般人が自分のイラストを投稿するサイトです..."
- "が、だからこそ、テレビのワイドショーしか見ない低能有権者が、みんなの党からドッと舛添新党に流れるとみられているのだ。"
Links





