▽19990830a
#日記
今日は新川崎でアレコレ.
社の人が,どっかから持ってきた Makefile が動かないってヘルプ入れてきた. 元は SunOS で使っていたらしく, こいつを HP-UX に持ってきたらコンパイルエラーが出るというのだ.
ってわけで,とりあえず自分の PC の Cygwin32 の gmake でやってみたら, きちんと実行ファイルができてしまった.謎. なので HP-UX にコピーして実行してみると, 「# の作成方法が不明です」というエラーになる.
で,調べてたらこんな表記があった.
---------------------------- ### ユーザライブラリ LIBCOMFLS = \ ### なんちゃらかんちゃら ... ----------------------------
ここの行末の「?」が良くないらしいのだ. フツーは行末に「?」があったら 「改行をクォートして無効にし,次行と連結する」という解釈だと思う. でもって Cygwin32 の gmake はそのように動作する. しかし,HP-UX の make は, 「? 以降のブランク文字を全部すっとばす」という動作をしてるくさいのだ. つまりこの文は,
と記述したことになっていて, でもって ? の効果で最初の # はコメント記述子としての機能をなくし, 2番目の # から後はコメントとして無視. 結果,「LIBCOMFS = #」という設定になって, 後ろの方で「#」を作ろうとしてコケるのだ.---------------------------- ### ユーザライブラリ LIBCOMFLS = \### なんちゃらかんちゃら ... ----------------------------
これ,正しい動作とはとても思えないんだけど,バグなのかなぁ? SunOS でも Win32 でもきちんと動作してるって事は, 上記の解釈が正しいんじゃないかと思うんだけど, man ページを見ても,そもそも「?」の機能自体が説明されてないのだ. うーむ,何考えてんだ HP.