Squish for Qt: combine source and binary package

Squish for Qt: combine source and binary package

Squish for Qt is available as a binary package and a source package. The binary package is available for common platforms and compilers, but sometimes the Qt version you need is missing. Or maybe it is there, but it was built with a Qt configuration that does not match the Qt version you use in your project. In all these cases, you have to use the source package and build Squish yourself.

This might be hassle since you need to install the wanted scripting languages, e.g. This becomes even more of a problem if you want to build Squish on one machine and use the one build on many other machines (because the scripting languages have to be installed on that machine as well).

The advantage of the Squish binary package in this respect is that all is already packaged.

It becomes even worse if you are in the unlucky situation that you have to do a split build of Squish because your applications Qt version is that old that some parts of Squish does not support it (e.g. testing Qt 3.0 applications) or if your application is using a single-threaded Qt library.

So wouldn’t it be nice if you could just use the ease of installation of the binary package together with the flexibility of the source package? Well, you almost can.

Well, the good thing is that only the parts of Squish that are loaded into the process space of your AUT must use the Qt version it uses. And these are rather few. So if you want to test a Qt 3.0 application, e.g. just grab the Qt source edition and configure it so it builds only the necessary parts:

configure --with-qtdir=c:\Qt\3.0.7 --disable-all --enable-idl --enable-wrappers --enable-examples

Now run

build

and the necessary share libraries are built.

In the meantime, grab a Squish binary edition and unpack it. When the above build is finished, you have to copy the following files from the source package to the binary package:

bin\squishqtwrapper.dll
bin\squishook.dll
bin\squishqtbuiltinhook.dll
bin\squishqtcompat.dll

etc\setup.ini

lib\squishqtpre.dll

examples\qt3\addressbook\addressbook.exe
examples\qt3\canvas\canvas.exe
examples\qt3\canvasWrapper.dll

Now, you have a Squish binary package for testing Qt 3.0.7 applications. You can copy the whole directory to any machine you like. You just have to run setup.exe on each target machine and choose the location of your Qt 3.0.7 DLL.

This description was for Windows, but it works on other platforms as well; just be aware that the shared libraries are not named squishqtwrapper.dll, but libsquishqtwrapper.so (on Linux, e.g.) and that they are not located in the bin but rather in the lib directory.

Also note that the squishqtcompat.dll is not needed for all Qt versions. So if you get one in your source build, copy it over (and if you didn’t get one don’t worry about it, you don’t need it).