From: David Vallner on
Vincent Fourmond wrote:
>> I guess I am just trying to gauge the chances of a qt ruby gem being built?
>
> If I understood right, you're looking for a gem that would also
> include Qt4 libraries, is it right ? There would be no legal problem in
> distributing it, but I think it will be rather tricky to make. I hope
> I'm wrong.
>

I'm fairly sure that the wx gem comes / used to come (no idea about the
changes with the SWIG rewrite) with wx linked into it. I'm not quite
sure that it's the best solution (people might want to use a custom wx
version), but if the build configuration was sane, it's probably good
enough for most purposes people will need and the ones that can make a
custom wx build can as well make a custom wxRuby from it.

Digressions aside, I don't think this would be technically infeasible
for Qt. Either Qt is designed (on Windows) to be statically linked into
an executable, in which case doing so for a Ruby extension library
shouldn't be a problem, or to be provided as a separate runtime DLL, in
which case dropping in this DLL into Ruby's bin directory should solve
the problem on any NT-based version of Windows - and I think rubygems
already lets you install an executable, so making this the DLL for
qtruby-mswin32 shouldn't be a problem.

David Vallner

From: Shea Martin on

>
> BUILDING ON WINDOWS
>
> * The smoke library can be built on windows by manually editing
> qtguess.pl.in and generate.pl.in (automake doesn't work with
> qtruby on Windows). Run 'perl qtguess.pl' to for the configure
> tests. Then run 'perl generate.pl' to generate the Smoke sources,
> and build with qmake. Use extconf.rb and qmake to build the
> qtruby extension and rbuic tool.
>

The qtruby tarball I downloaded does not seem to have any of the
aforementioned perl files. My qt4 install is MSVC-2005. I just want qt
bindings, not KDE.

The INSTALL files don't seem to even mention win32.

What am I missing?

~S
From: richard.j.dale@gmail.com on

Shea Martin wrote:
> >
> > BUILDING ON WINDOWS
> >
> > * The smoke library can be built on windows by manually editing
> > qtguess.pl.in and generate.pl.in (automake doesn't work with
> > qtruby on Windows). Run 'perl qtguess.pl' to for the configure
> > tests. Then run 'perl generate.pl' to generate the Smoke sources,
> > and build with qmake. Use extconf.rb and qmake to build the
> > qtruby extension and rbuic tool.
> >
>
> The qtruby tarball I downloaded does not seem to have any of the
> aforementioned perl files. My qt4 install is MSVC-2005. I just want qt
> bindings, not KDE.
>
> The INSTALL files don't seem to even mention win32.
>
> What am I missing?

mardigras rdale 165% find . -name qtguess.pl.in -print
../smoke/qt/qtguess.pl.in
mardigras rdale 166% find . -name generate.pl.in -print
../smoke/qt/generate.pl.in

You're right about the INSTALL not mentioning Windows though, that is
certainly an important omission and I'll fix it for the next release.
You need to change the '@thing@' variables in the perl scripts to be
what the configure should have set them to. Edit qtguess.pl.in and save
as qtguess.pl, and then edit generate.pl.in and save as generate.pl.

From: Shea Martin on
> mardigras rdale 165% find . -name qtguess.pl.in -print
> ./smoke/qt/qtguess.pl.in
> mardigras rdale 166% find . -name generate.pl.in -print
> ./smoke/qt/generate.pl.in
>
> You're right about the INSTALL not mentioning Windows though, that is
> certainly an important omission and I'll fix it for the next release.
> You need to change the '@thing@' variables in the perl scripts to be
> what the configure should have set them to. Edit qtguess.pl.in and save
> as qtguess.pl, and then edit generate.pl.in and save as generate.pl.
>

Sorry to be so stupid, but then what? Do I run them individually?
~S
From: richard.j.dale@gmail.com on

Shea Martin wrote:
> > mardigras rdale 165% find . -name qtguess.pl.in -print
> > ./smoke/qt/qtguess.pl.in
> > mardigras rdale 166% find . -name generate.pl.in -print
> > ./smoke/qt/generate.pl.in
> >
> > You're right about the INSTALL not mentioning Windows though, that is
> > certainly an important omission and I'll fix it for the next release.
> > You need to change the '@thing@' variables in the perl scripts to be
> > what the configure should have set them to. Edit qtguess.pl.in and save
> > as qtguess.pl, and then edit generate.pl.in and save as generate.pl.
> >
>
> Sorry to be so stupid, but then what? Do I run them individually?
Yes, 'perl qtguess.pl' and then 'perl generate.pl'.

I'm not sure if I actually need to run qtguess.pl, all it does is to
run various tests to see which options Qt was built with, and it writes
to the file qtdefines.

When you run the generate.pl script it starts a perl program called
'kalyptus' which uses the contents of the qtdefines file to skip any
methods/classes in the qt headers which were found to be missing from
the installed version of Qt. kalyptus generates the c++ code for the
smoke library from the qt headers, and you can compile them using qmake
to build a makefile from the project file 'qtsmoke.pro' in the smoke/qt
directory.

Here are the changes I made to generate.pl.in to create generate.pl and
get it to work:

$ diff generate.pl generate.pl.in
18c18
< my $headerlist = "./header_list";
---
> my $headerlist = "@srcdir@/header_list";
24c24
< if("no" eq "yes")
---
> if("@qtextscintilla@" eq "yes")
32c32
< if("no" eq "yes")
---
> if("@qtextscintilla@" eq "yes")
92c92
< if("no" eq "yes")
---
> if("@qtextscintilla@" eq "yes")
100c100
< if("no" eq "yes")
---
> if("@KDE_HAVE_GL@" eq "yes")
119c119
< $qtinc= '/cygdrive/c/qt/4.1.2/include';
---
> $qtinc= '@qt_includes@';
140c140
< system "perl -I../../kalyptus ../../kalyptus/kalyptus @ARGV --qt4
--globspace
-fsmoke --name=qt $macros --no-cache --outputdir=$outdir @headers";
---
> system "perl -I(a)top_srcdir@/kalyptus @top_srcdir@/kalyptus/kalyptus @ARGV --qt
4 --globspace -fsmoke --name=qt $macros --no-cache --outputdir=$outdir
@headers"
;

This is the contents of my qtdefines file on windows:

$ cat qtdefines
QT_DEBUG
QT_CHECK_NULL
QT_LARGEFILE_SUPPORT
QT_PRODUCT_LICENSE
QT_MODULE_ICONVIEW
QT_MODULE_KERNEL
QT_STATIC_CONST_IMPL
QT_NO_REMOTE
QT_MODULE_TABLE
QT_MODULE_WIDGETS
QT_NO_COP
QT_MODULE_STYLES
QT_MODULE_XML
QT_NO_WARNINGS
QT_CHECK_STATE
QT_STATIC_CONST
QT_CHECK_MATH
QT_CHECK_RANGE
QT_MODULE_NETWORK
QT_VERSION_STR
QT_MODULE_CANVAS
QT_MODULE_TOOLS
QT_BUILD_KEY
QT_MODULE_SQL
QT_MODULE_DIALOGS
QT_VERSION
QT_PRODUCT_LICENSEE
QT_POINTER_SIZE
QT_MODULE_OPENGL
QT_MODULE_WORKSPACE

-- Richard