[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:001793] Re: GTK対
応
RubyDCL
神代です.
At Tue, 13 Jul 2004 16:33:49 +0900, Takeshi Horinouchi wrote:
> 話を戻しちゃうのかもしれませんが、確認です。
>
> もともと、dcl の gtk 対応版は、gtk がインストールされてなくても
> 動く(そして、gtk がインストールされている場合だけgtk 対応する)
> という仕様になってたはずですが、一連の変更はその点大丈夫ですか?
> (DCL の C 版を二系統維持しなくてすむように、gtk があれば対応と
> いスタンスです。)
> この話はもっと前に書くべきでしたが、忘れてました。すみません。
この点は,大丈夫です.
RubyDCL の extconf.rb は,GTKそのものではなくて,DCL(C)がGTK対応か非対
応かを判定しています.
今回確認したのは,GTK非対応の場合は関係なくて,GTK対応である場合に
GTK <-> DCL(C) <-> RubyDCL
ではなくて
GTK <-> DCL(C) <-> (RubyDCL <-> Ruby-GTK)
であるということでした.
そうであるならば,Cygwinでは拡張ライブラリから拡張ライブラリを呼ぶとき
にちょっと一手間必要なので,そこを考慮するのが今回の変更です.
(もともと考慮されていたがtypoがあった部分 + 今日メールした新たな修正点)
ruby-dcl-1.4.0 の extconf.rb で GTKの有無でそれぞれどうしているかというと,
元のソースは
init.c.default
init.c.gtk
grph1_zgpack.c.org
が用意されていて,
GTKがない場合:
File.copy("init.c.default","init.c")
GTKがある場合:
File.copy("grph1_zgpack.c.org","grph1_zgpack.c")
File.copy("init.c.gtk","init.c")
$LOCAL_LIBS += "-lruby-glib2" ← Cygwinの場合のみ
としています.
先ほどのメールは,これに加えて,dcl.rb を変更するものだったのですが,
おっしゃるとおりソースを直接書き換えるのはよくないですね.すみません.
> なお、cygwin だかどうかが実行時に簡単に判別できるなら、dcl.rb 中で
>
> require "glib2" if cygwin
> ^^^^^^ここは適宜書き換え
>
> 的なことをする手もあります。
Cygwin かつ DCL(C)がGTK対応の場合なので,
if /cygwin/ =~ RUBY_PLATFORM and `cdclconfig --gtkversion`.chop == "2"
require "glib2"
end
となりますでしょうか.
あるいは,init.c のように dcl.rb.default と dcl.rb.gtk を用意しておい
て同じようなことをやるとか.
# ちなみに,ruby-dcl-1.4.0.tar.gz を展開すると,ruby-dcl-1.4.0/lib/ に
# dcl.rb.tmp, dcl.rb_saved というのもあるのですが,これは不要ですか?