著作一覧 |
Rubyのmakeしようとして、でも何か理由があって途中(.cのコンパイル中くらい)に失敗したとする。
で、クリーンしようとすると途中でstopする。
調べるとclean-encの中でエラーになる。
C:\Users\arton\ruby-1.9.2-preview3>nmake clean-enc Microsoft (R) Program Maintenance Utility Version 6.00.9782.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. cleaning encodings NMAKE : fatal error U1052: ファイル 'enc.mk' が見つかりません。 Stop.
ところが、clean-encのところ($(SRC)/common.mk)を見ると
clean-enc distclean-enc realclean-enc: @echo $(@:-enc=ing) encodings @-$(MAKE) -f $(ENC_MK) $(MFLAGS) $(@:-enc=)
となっていて、先頭に「-」が付いているからエラーチェックは働かないはず。
事実、最後までmakeを終わらせた後は、何度(修正。ここは嘘)make clean-enc
とかやってもエラーにはならない。
おれにとっては、これがRubyの一番の黒魔術だ。
追記:わかってしまえば何のことはなく、nmakeが呼び出すnmakeがStopエラーになっていて(それは前提なので@-としているわけで)、元のnmakeはそのまま処理を継続していました。お騒がせしてすみません。
でもちょっと待てよ。(ここは嘘)
makeが最後まで走った後は
C:\Users\arton\ruby-1.9.2-preview3>nmake clean-enc Microsoft (R) Program Maintenance Utility Version 6.00.9782.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. cleaning encodings @-nmake -f enc.mk -l clean
echoの出力が異なるなぁ。ここに秘密がありそうだ。
ジェズイットを見習え |