From: Katsuyuki Komatsu Date: 1999-12-31T13:21:25+09:00 Subject: [ruby-dev:8789] Re: [win] dir name 小松です。 In the message of [ruby-dev:8766] Re: [win] dir name on 1999/12/29 20:01:50 EGUCHI Osamu wrote: |えぐち@エスアンドイー です。 |komatsu> しかし、.Cはどうしよう。大文字小文字を区別しないファイルシステム |komatsu> では.cと区別できないですが、.Cも必要なんですよね。 |komatsu> サポートしないという手もあるか。 | |既に、make の組み込みの定義をオーバーライドしているので、 |ここでの .c と .C の重複も警告程度で済む、と期待するのは甘すぎ? 大丈夫なようです。警告も.SUFFIXESだけでした。 C:\lang\ruby\x>nmake -nologo -P > nul NMAKE : warning U4005: ルール '.cc.obj' を無視します。(.SUFFIXES に接尾辞が指定されていません。) C:\lang\ruby\x> .Cと.cを両方書いておくと後に書いたほうが勝つので以下でよいみたい。 .SUFFIXES: .cc .cxx .cpp .C .cc.obj: $(CC) $(CXXFLAGS) $(CPPFLAGS) -c $< .cxx.obj: $(CC) $(CXXFLAGS) $(CPPFLAGS) -c $< .cpp.obj: $(CC) $(CXXFLAGS) $(CPPFLAGS) -c $< .C.obj: $(CC) $(CXXFLAGS) $(CPPFLAGS) -c $< .c.obj: $(CC) $(CFLAGS) $(CPPFLAGS) -c $< 変更前と変更後のnmake -Pの結果を比較するとこんな感じ。 "コマンド"は実際は半角カナです。 --- rule-old Fri Dec 31 13:05:26 1999 +++ rule-new Fri Dec 31 13:05:31 1999 @@ -84,0 +85,3 @@ +.c.obj: + コマンド: $(CC) $(CFLAGS) $(CPPFLAGS) -c $< + @@ -88,2 +91,2 @@ -.c.obj: - コマンド: $(CC) $(CFLAGS) /c $< +.cpp.obj: + コマンド: $(CC) $(CXXFLAGS) $(CPPFLAGS) -c $< @@ -94,2 +97,2 @@ -.cpp.obj: - コマンド: $(CPP) $(CPPFLAGS) /c $< +.cxx.obj: + コマンド: $(CC) $(CXXFLAGS) $(CPPFLAGS) -c $< @@ -100,3 +102,0 @@ -.cxx.obj: - コマンド: $(CXX) $(CXXFLAGS) /c $< - @@ -139 +139,4 @@ -.SUFFIXES: .exe .obj .asm .c .cpp .cxx .bas .cbl .f .f90 .for .pas .res .rc +.cc.obj: + コマンド: $(CC) $(CXXFLAGS) $(CPPFLAGS) -c $< + +.SUFFIXES: .exe .obj .asm .c .cpp .cxx .bas .cbl .f .f90 .for .pas .res .rc .cc .cxx .cpp .C |#あと、 OBJEXT を参照しないといけないかも、、 それはもちろん。lib/mkmf.rbで展開するでしょうが、以下でも通ります。 OBJEXT=obj .cpp.$(OBJEXT): $(CC) $(CXXFLAGS) $(CPPFLAGS) -c $< |komatsu> あと、C++コンパイラは$(CC)かと言われるとちょっと疑問があります。 |komatsu> $(CXX)にしてどこかで設定しておく? | |configure で AC_PROG_CXX するのが順当なんでしょうけど、 |ruby 自体は C++ コンパイラを要求しないのに、C++ コンパイラが |なくて confiure に失敗するのは問題ですね、 それはいやですね。 |で、 $(CXX) や $(CCC) は定義されていなくても、$(CC) は必ず定義されるので、 |$(CC) のままでいいんじゃないか、、と言う判断ではいけないでしょうか? うーん、悪くはないと思いますが…… 大丈夫と断定できるほどの確信はないです。 -- 小松克行 / Katsuyuki Komatsu