Personal tools
You are here: Home Members cpascual Documents How to Compile QtiPlot for Windows (v 0.9.8.3)

How to Compile QtiPlot for Windows (v 0.9.8.3)

Compiling QtiPlot for windows is not trivial due to lack of detailed documentation from the developer. This is a step-by-step howto to keep record of the "tricks" in order to make the whole process easier in the future.

joomla stats

IMPORTANT NOTE:

The links in this guide were valid in December 2010. It is likely that some of the programs get updated and change their download addresses. I will update them if someone reports broken links.

Similarly, the instructions are given for specific versions available at that time. I expect most of the information to be valid  (with trivial changes like changing some path name) if you use newer versions, but I don't test too often. If you succeed in compiling QtiPlot using newer versions and/or other configurations, I ask you to send me an email so that I can update the information in this page.

CLOSED PLUG-INs:

Since Version 0.9.8.4, the author of QtiPlot decided to move certain features of QtiPlot (e.g., Full import of OriginLab® Origin projects, Excel workbooks and Open Document Format spreadsheets, dBase, SQLite and Microsoft Access databases and plot export to image format EMF) to what he calls a "plug-in" system and he does not distribute the code for those plug-ins (the legality of this should be looked at carefully). As a result, it may be difficult or even impossible to compile full-featured binaries for versions >=0.9.8.4

OTHER SOURCES OF INFORMATION:

  • Older versions of my howto are also available (for 0.9.7.8 and 0.9.8.1)

Introduction

QtiPlot is a scientific data analysis and plotting tool. It is a free clone of Origin.

The official page for Qtiplot is:  http://soft.proindependent.com/qtiplot.html

This how-to recreates the steps I used for compiling qtiplot-0.9.8.3 for windows XP.

 

Ready to use packages


Important: If you are looking for ready-to-use (i.e., already compiled) packages for QtiPlot under Windows, you may be interested in this page instead.

 

Motivation

 

Although QtiPlot is Free (GPL v2), its author provides windows binaries only under a commercial contract.

Of course, given that the sources are GPL'ed, anyone is allowed to compile and redistribute the program by him/herself.

While the official compilation instructions in the QtiPlot web page are correct, they are far from being practical, and there is obvious lack of support from the author to any questions related to compilation problems. In general, the official policy seems (understandably) directed towards encouraging users to pay for a "maintenance contract".

Figuring out the little unexplained details for compilation took me a considerable amount of time and therefore I think it is interesting to document the whole process.

 

Prerequisites

We start from a pristine windows XP machine.

According to the QtiPlot Manual, we need about 14 libraries installed (Qt, Qwt, QwtPlot3D, liborigin2, muParser,  boost, GSL, zlib, libpng, EmfEngine, quazip, QTexEngine, ALGLIB, ExcelFormat) as well as the mingw compiler.

In practice, some of them are included in the qtiplot source distribution and others are bundled in a package called Mingw-Distro. The instructions to have everything set-up are:

Installing Mingw-Distro

This bundle package from http://nuwen.net/mingw.html already provides you with:

  • the mingw compiler
  • libpng
  • zlib
  • boost

 

For installing the distro, do the following:

  1. Grab the latest release of MinGw-Distro from http://nuwen.net/mingw.html (I used Mingw-6.6.zip)
  2. uncompress the zip file in c:\Mingw
  3. cd c:\Mingw\bin
  4. copy make.exe mingw32-make.exe
  5. Add c:\Mingw\bin to the system PATH environment variable

NOTE ABOUT PATHS: In this how to I indicate the paths into which installing the different libraries and programs. In principle, you can choose different ones, but then you have to be careful about adapting the rest of the instructions accordingly. If you decide to change the paths, keep in mind the following:

  1) I strongly advise to stick to suggested names in the case of code that goes into the 3rdparty subdirectory of the QtiPlot sources

  2) always avoid using spaces or any non-english character in the pathnames.

Download and unpack Qtiplot sources

  1. Download Qtiplot from http://soft.proindependent.com/qtiplot.html (qtiplot-0.9.8.3.zip)
  2. Uncompress it to c:\qtiplot-0.9.8.3

IMPORTANT NOTE: In the following steps, you will modify files under c:\qtiplot-0.9.8.3 . If at some point the instructions are not clear, you can use my copy of the final estate as a reference: (example of modified sources for qtiplot-0.9.8.3)

Installing GSL

There is a pre-compiled windows port of GSL at

http://gnuwin32.sourceforge.net/packages/gsl.htm

  1. Download the "Binaries" and "Developer" zip files (gsl-1.8-bin.zip  and gsl-1.8-lib.zip)
  2. Create a directory called "gsl" under c:\qtiplot-0.9.8.3\3dparty
  3. Uncompress both zip files in it. Now the gsl directory structure should look something like:
qtiplot-0.9.8.3
├── 3rdparty
│   ├── gsl
│   │   ├── bin
│   │   ├── contrib
│   │   │   └── gsl ...
│   │   ├── include
│   │   │   └── gsl
│   │   ├── lib
│   │   ├── man
│   │   │   ├── cat1
│   │   │   └── cat3
│   │   ├── manifest
│   │   └── share
:   :
:   :

Installing muParser

  1. Download muParser from http://muparser.sourceforge.net/ (muparser_v132.tar.gz)
  2. Uncompress it to c:\qtiplot-0.9.8.3\3dparty\muparser (you can use the gzip.exe and tar.exe executables in c:\mingw\bin, or just install 7zip from http://www.7-zip.org/)
  3. open a command prompt and ...
  4. cd  c:\qtiplot-0.9.8.3\3dparty\muparser\build
  5. make -f makefile.mingw

Installing Qt

I found out that I had to compile Qt from sources (instead of installing the pre-compiled binaries) to avoid an incompatibility with the mingw

compiler from mingw-distro.

  1. Download the sources package from ftp://ftp.qt.nokia.com/qt/source/ (qt-everywhere-opensource-src-4.6.3.zip)
  2. uncompress the sources in: c:\qt\4.6.3
  3. set the following system environment variable: QMAKESPEC=win32-g++
  4. open a new command prompt and...
  5. cd c:\qt\4.6.3
  6. configure -release
  7. make
  8. add "C:\Qt\4.6.3\bin"  to the system PATH environment variable

 

NOTE: step 6 will take long time, and step 7 will take VERY long time (it took ~9 hours in my case)

Installing SIP and PyQt

This is optional. If you don't do it, python scripting won't be supported, but QtiPlot will otherwise work.
  1. Install Python if you don't already have it: download the installation binary from http://python.org/download (I used the "Python2.7 Windows Installer") and install it.
  2. add the directory where you installed python (e.g. c:\python27) to the system PATH environment variable
  3. Install SIP:
    1. Download the source code for SIP from http://www.riverbankcomputing.co.uk/software/sip/download (sip-4.10.5.zip). NOTE (2011-05-24). The mentioned version of sip is no longer available from Riverbank main page (although you may get it from their mercurial repository). Since I got a report that this instructions may not work with newer SIP versions, you can download sip-4.10.5.zip from this server
    2.  uncompress it in c:\sip
    3. cd c:\sip
    4. python configure.py --platform=win32-g++
    5. make
    6. make install
  4. Install PyQt:
    1. Download the source code for PyQt4 from (http://www.riverbankcomputing.co.uk/software/pyqt/download) (PyQt-win-gpl-4.7.4.zip)
    2.  uncompress it in c:\pyqt
    3. cd c:\pyqt
    4. python configure.py
    5. make
    6. make install


Installing liborigin2

This is optional. If you don't do it, importing project files from OriginLab will not be supported, but QtiPlot will otherwise work.

  1. Download the source package from http://soft.proindependent.com/liborigin2 (http://download.berlios.de/qtiplot/liborigin2-13092010.zip)
  2. uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\liborigin2
  3. Download tree.hh from http://tree.phi-sci.com/tree.hh and copy it to c:\qtiplot-0.9.8.3\3dparty\liborigin2\
  4. Edit c:\qtiplot-0.9.8.3\3dparty\liborigin2\liborigin2.pro and modify the INCLUDEPATH and LIBS variables to look as follows (note that INCLUDEPATH includes "./"):
    • # Path to the folder where the header files of the BOOST C++ libraries are installed
      INCLUDEPATH += C:/MinGW/include/boost
      INCLUDEPATH += ./

      # link statically against a copy of BOOST C++ libraries
      LIBS = C:/MinGW/lib/libboost_date_time.a C:/MinGW/lib/libboost_thread.a
  5. Now open a command prompt and...
  6.  cd c:\qtiplot-0.9.8.3\3dparty\liborigin2
  7. qmake
  8. make
  9. now edit c:\qtiplot-0.9.8.3\qtiplot\origin\origin.pri and replace each occurence of "3rdparty/liborigin" with "3rdparty/liborigin2"

Installing EmfEngine

This is optional. If you don't do it, exporting to windows meta files will not be supported, but QtiPlot will otherwise work.

  1. Download the source package from http://soft.proindependent.com/emf/download.html (EmfEngine-0.8-opensource.zip)
  2. uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\EmfEngine
  3. Edit the file  c:\qtiplot-0.9.8.3\3dparty\EmfEngine\config.pri and comment the following line:
    win32:CONFIG += HAVE_GDI_PLUS
  4. Now edit the file  c:\qtiplot-0.9.8.3\qtiplot\qtiplot.pro and find the following section:
    # check if we have EmfEnginge
    !isEmpty(EMF_ENGINE_LIBS) {
            DEFINES += EMF_OUTPUT
            INCLUDEPATH += $$EMF_ENGINE_INCLUDEPATH
            INCLUDEPATH += /usr/local/include/libEMF
    
            LIBS        += $$EMF_ENGINE_LIBS
            win32:LIBS  += -lgdiplus
            unix:LIBS   += /usr/local/lib/libEMF.a
  5. You need to change the following line
    win32:LIBS  += -lgdiplus
    by:
    win32:LIBS  += -lgdi32
  6. Now open a new command prompt and...
  7.  cd c:\qtiplot-0.9.8.3\3dparty\EmfEngine
  8. qmake
  9. make

 

Installing QuaZip

This is optional. If you don't do it, import from ODF spreadsheets (e.g., OpenOffice .ods files) will not be supported, but QtiPlot will otherwise work.

  1. Download the source package from  http://sourceforge.net/projects/quazip/ (quazip-0.3.zip)
  2. uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\quazip
  3. Now open a command prompt and...
  4.  cd c:\qtiplot-0.9.8.3\3dparty\quazip
  5. qmake
  6. make
  7. now create a directory called c:\qtiplot-0.9.8.3\3dparty\quazip\lib and copy the file c:\qtiplot-0.9.8.3\3dparty\quazip\quazip\release\libquazip.a into it. (This step may not be necessary at all, but it won't hurt!)

Installing ExcelFormat

This is optional. If you don't do it, import and export of Excel files will not be supported, but QtiPlot will otherwise work.

  1. Download the source package from http://www.codeproject.com/KB/office/ExcelFormat.aspx (ExcelFormat_src.zip)
  2. uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\ExcelFormat
  3. create a directory called c:\qtiplot-0.9.8.3\3dparty\ExcelFormat\lib
  4. Now open a command prompt and...
  5.  cd c:\qtiplot-0.9.8.3\3dparty\ExcelFormat\lib
  6. g++ -O2 -Wall -include string.h -c ..\BasicExcel.cpp
  7. g++ -O2 -Wall -include string.h -c ..\ExcelFormat.cpp
  8. ar rcs libExcelFormat.a BasicExcel.o ExcelFormat.o
  9. If all was ok, the c:\qtiplot-0.9.8.3\3dparty\ExcelFormat\lib should now contain 3 files: BasicExcel.o , ExcelFormat.o and  libExcelFormat.a

Installing QTexEngine

This is optional. If you don't do it, export to TeX files will not be supported, but QtiPlot will otherwise work.

  1. Download the source package from http://soft.proindependent.com/qtexengine/ (QTeXEngine-0.3-opensource.zip)

  2. uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\QTeXEngine
  3. Now open a command prompt and...
  4.  cd c:\qtiplot-0.9.8.3\3dparty\QTeXEngine
  5. qmake
  6. make

 

Installing ALGLIB

This is optional. If you don't do it, sparse matrices will not be supported, but QtiPlot will otherwise work.

  1. Download the source package from http://alglib.net/translator/re (alglib-2.6.0.cpp.zip)
  2. uncompress the sources in c:\qtiplot-0.9.8.3\3dparty\alglib
  3. Now open a command prompt and...
  4.  cd c:\qtiplot-0.9.8.3\3dparty\alglib\cpp
  5. build.bat mingw
  6. now copy the contents of  c:\qtiplot-0.9.8.3\3dparty\alglib\cpp\out\  into  c:\qtiplot-0.9.8.3\3dparty\alglib\

 

Compiling Qtiplot

Once all the prerequisites are dealt with, we can compile QtiPlot. The source directory for qtiplot now looks like this (only 3 levels of directories are shown):

qtiplot-0.9.8.3
├── 3rdparty
│   ├── EmfEngine
│   ├── gsl
│   ├── liborigin
│   ├── muparser
│   ├── QTeXEngine
│   ├── qwt
│   ├── qwtplot3d
│   └── zlib
├── fitPlugins
│   ├── explin
│   ├── exp_saturation
│   ├── fitRational0
│   ├── fitRational1
│   └── planck_wavelength
├── manual
│   ├── docbook-en
│   └── html
└── qtiplot
    ├── examples
    ├── icons
    ├── src
    └── translations
  1. If you don't have docbook and doxygen installed, edit c:\qtiplot-0.9.8.3\qtiplot.pro and delete the line referring to the "manual" subdirectory. This way you won't compile the manual, but you can always download it from the official page (there is even a menu option for that in the qtiplot program itself), or copy the manual directory from an official binary.
  2. Open a command prompt and:
  3.  cd c:\qtiplot-0.9.8.3
  4. copy build.conf.example build.conf 
  5. Now you have to edit Edit c:\qtiplot-0.9.8.3\build.conf . There are several changes to do:
    1. Change the lines beginning by "XXXX_INCLUDEPATH" and "win32:XXXX_LIBS" to point to the right paths in your system (in my case, I only had to do changes in the Boost and libpng sections)
    2. If you didn't install liborigin2, comment out all the lines in the liborigin2 section.
    3. If you didn't install ExcelFormat, comment out all the lines in the ExcelFormat section.
    4. If you didn't install QuaZip, comment out all the lines in the QuaZip section.
    5. If you didn't install EmfEngine,  comment out all the lines in the EmfEngine section.
    6. If you didn't install QTexEngine,  comment out all the lines in the QtexEngine section.
    7. If you didn't install ALGLIB,  comment out all the lines in the ALGLIB section.
    8. If you didn't install SIP+PyQt,  comment out the line that says: "SCRIPTING_LANGS += Python".
    9.  Finally, I also modified the "System specific configuration" section to point to the MinGw include and lib paths, but I suspect it is not necessary. Once all the modifications were done, my build.conf file ended up as:
      isEmpty( QTI_ROOT ) {
      message( "each file including this config needs to set QTI_ROOT to the dir containing this file!" )
      }

      ##########################################################
      ## System specific configuration
      ##########################################################

      # Global include path which is always added at the end of the INCLUDEPATH
      SYS_INCLUDEPATH = /opt/local/include
      # Global lib path and libs which is ls always added at the end of LIBS
      SYS_LIBS = -L/opt/local/lib

      ##########################################################
      ## zlib (http://www.zlib.net/)
      ##########################################################

      # include path. leave it blank to use SYS_INCLUDE
      ZLIB_INCLUDEPATH = $$QTI_ROOT/3rdparty/zlib/

      ##########################################################
      ## muParser (http://muparser.sourceforge.net/)
      ##########################################################

      # include path. leave it blank to use SYS_INCLUDE
      MUPARSER_INCLUDEPATH = $$QTI_ROOT/3rdparty/muparser/include
      # link statically against a copy in 3rdparty/
      MUPARSER_LIBS = $$QTI_ROOT/3rdparty/muparser/lib/libmuparser.a
      # or dynamically against a system-wide installation
      #MUPARSER_LIBS = -lmuparser

      ##########################################################
      ## GNU Sientific Library (http://www.gnu.org/software/gsl/)
      ##########################################################

      # include path. leave it blank to use SYS_INCLUDE
      GSL_INCLUDEPATH = $$QTI_ROOT/3rdparty/gsl/include
      # link statically against a copy in 3rdparty/
      GSL_LIBS = $$QTI_ROOT/3rdparty/gsl/lib/libgsl.a \
      $$QTI_ROOT/3rdparty/gsl/lib/libgslcblas.a
      # or dynamically against a system-wide installation
      #GSL_LIBS = -lgsl -lgslcblas

      ##########################################################
      ## QWT - use local copy till upstream catches up
      # http://qwt.sourceforge.net/index.html
      ##########################################################

      # include path.
      QWT_INCLUDEPATH = $$QTI_ROOT/3rdparty/qwt/src
      # link locally against a copy in 3rdparty/
      QWT_LIBS = $$QTI_ROOT/3rdparty/qwt/lib/libqwt.a

      ##########################################################
      ## QwtPlot3D - use local copy till upstream catches up
      # http://qwtplot3d.sourceforge.net/
      ##########################################################

      # include path.
      QWT3D_INCLUDEPATH = $$QTI_ROOT/3rdparty/qwtplot3d/include
      # link locally against a copy in 3rdparty/
      win32:QWT3D_LIBS = $$QTI_ROOT/3rdparty/qwtplot3d/lib/qwtplot3d.dll
      unix:QWT3D_LIBS = $$QTI_ROOT/3rdparty/qwtplot3d/lib/libqwtplot3d.a

      ##########################################################
      ## Boost libraries (http://www.boost.org/) - optional
      ##########################################################

      # include path. leave it blank to use SYS_INCLUDE
      #BOOST_INCLUDEPATH = $$QTI_ROOT/3rdparty/boost
      BOOST_INCLUDEPATH = C:/MinGW/include/boost
      # link statically against a copy in 3rdparty/
      unix: BOOST_LIBS = $$QTI_ROOT/3rdparty/boost/lib/libboost_date_time.a \
      $$QTI_ROOT/3rdparty/boost/lib/libboost_thread.a

      ##win32:BOOST_LIBS = $$QTI_ROOT/3rdparty/boost/lib/libboost_date_time-mgw34-mt.lib \
      ## $$QTI_ROOT/3rdparty/boost/lib/libboost_thread-mgw34-mt.lib

      # link statically against a copy in C:/MinGW/
      win32:BOOST_LIBS = C:/MinGW/lib/libboost_date_time.a \
      C:/MinGW/lib/libboost_thread.a

      # or dynamically against a system-wide installation
      #BOOST_LIBS = -lboost_date_time-mt -lboost_thread-mt

      ##########################################################
      ## liborigin2 - optional. you don't have to set these variables
      # http://soft.proindependent.com/liborigin2/
      ##########################################################

      # include path. leave it blank to use SYS_INCLUDE
      LIBORIGIN_INCLUDEPATH = $$QTI_ROOT/3rdparty/liborigin2
      # link statically against a copy in 3rdparty/
      LIBORIGIN_LIBS = $$QTI_ROOT/3rdparty/liborigin2/liborigin2.a

      ###########################################################
      ## libxls - optional. you don't have to set these variables
      # http://libxls.sourceforge.net/
      ###########################################################

      # include path.
      #XLS_INCLUDEPATH = $$QTI_ROOT/3rdparty/libxls/include/
      XLS_INCLUDEPATH = $$QTI_ROOT/3rdparty/ExcelFormat/
      # link locally against a copy in 3rdparty/
      #XLS_LIBS = $$QTI_ROOT/3rdparty/libxls/lib/libxlsreader.a
      XLS_LIBS = $$QTI_ROOT/3rdparty/ExcelFormat/lib/libExcelFormat.a

      ###########################################################
      ## QuaZIP - optional. you don't have to set these variables
      # http://quazip.sourceforge.net/
      ###########################################################

      # include path.
      QUAZIP_INCLUDEPATH = $$QTI_ROOT/3rdparty/quazip/quazip/
      # link locally against a copy in 3rdparty/
      QUAZIP_LIBS = $$QTI_ROOT/3rdparty/quazip/lib/libquazip.a

      ##########################################################
      ## libpng - optional. you don't have to set these variables
      ##########################################################

      # include path. leave it blank to use SYS_INCLUDE
      ##LIBPNG_INCLUDEPATH = $$QTI_ROOT/3rdparty/libpng/
      LIBPNG_INCLUDEPATH = C:/MinGW/include
      # link statically against a copy in 3rdparty/
      ##LIBPNG_LIBS = $$QTI_ROOT/3rdparty/libpng/libpng.a
      LIBPNG_LIBS = C:/MinGW/lib/libpng.a
      # or dynamically against a system-wide installation
      #LIBPNG_LIBS = -lpng

      ##########################################################
      ## EmfEngine - optional. you don't have to set these variables
      # http://soft.proindependent.com/emf/index.html
      ##########################################################

      # include path.
      EMF_ENGINE_INCLUDEPATH = $$QTI_ROOT/3rdparty/EmfEngine/src
      # link locally against a copy in 3rdparty/
      EMF_ENGINE_LIBS = $$QTI_ROOT/3rdparty/EmfEngine/libEmfEngine.a

      ##########################################################
      ## QTeXEngine - optional. you don't have to set these variables
      # http://soft.proindependent.com/qtexengine/
      ##########################################################

      # include path.
      TEX_ENGINE_INCLUDEPATH = $$QTI_ROOT/3rdparty/QTeXEngine/src
      # link locally against a copy in 3rdparty/
      TEX_ENGINE_LIBS = $$QTI_ROOT/3rdparty/QTeXEngine/libQTeXEngine.a

      ##########################################################
      ## ALGLIB (2.6) - optional. you don't have to set these variables
      # http://www.alglib.net/
      ##########################################################

      # include path.
      ALGLIB_INCLUDEPATH = $$QTI_ROOT/3rdparty/alglib/
      # link locally against a copy in 3rdparty/
      ALGLIB_LIBS = $$QTI_ROOT/3rdparty/alglib/libalglib.a

      ##########################################################
      ## python - only used if python is needed
      ##########################################################

      # the python interpreter to use
      # (unix only, windows will use what ever is configured to execute .py files!)
      PYTHON = python

      ##########################################################
      ## Qt tools - allows to use specific versions
      ##########################################################

      LUPDATE = lupdate
      LRELEASE = lrelease

      ############################################################
      ## Target specific configuration: configure Qtiplot itself
      ############################################################

      contains( TARGET, qtiplot ) {
      # building without muParser doesn't work yet
      SCRIPTING_LANGS += muParser
      SCRIPTING_LANGS += Python

      # a console displaying output of scripts; particularly useful on Windows
      # where running QtiPlot from a terminal is inconvenient
      DEFINES += SCRIPTING_CONSOLE

      #DEFINES += QTIPLOT_DEMO

      # Uncomment the following line if you want to perform a custom installation using the *.path variables defined in ./qtiplot.pro.
      CONFIG += CustomInstall

      # Uncomment the following line if you want to build QtiPlot as a browser plugin (not working on Internet Explorer).
      #CONFIG += BrowserPlugin

      CONFIG += release
      #CONFIG += debug
      #win32: CONFIG += console
      }
  6. And now, finally,  open a command prompt and...
  7.  cd c:\qtiplot-0.9.8.3
  8. qmake qtiplot.pro
  9. make

The compilation should proceed without problems now and qtiplot.exe should be ready in c:\qtiplot-0.9.8.3\qtiplot\

But if you try to execute it, you will probably get an error about a missing dll. Continue reading.

Creating a distribution package with all required libraries

For qtiplot.exe to run, it needs access to some dll's and other files.

In order to distribute qtiplot with all needed files, create a distribution dir and copy the following files there:

Path relative to distribution dir
original file in
gpl_license.txt
qtiplot_logo.png
 c:\qtiplot-0.9.8.3\
qtiplot.exe
qti_wordlist.txt
qtiplotrc.py
qtiUtil.py
c:\qtiplot-0.9.8.3\qtiplot\
qwtplot3d.dll
c:\qtiplot-0.9.8.3\3rdparty\qwtplot3d\lib\
quazip.dll
(only if you compiled with quazip support)

c:\qtiplot-0.9.8.3\3rdparty\quazip\quazip\release\
fitPlugins\explin.dll
fitPlugins\exp_saturation.dll
fitPlugins\fitRational0.dll
fitPlugins\fitRational1.dll
fitPlugins\planck_wavelength.dll
C:\qtiplot-0.9.8.3\fitPlugins\
Qt3Support4.dll
QtAssistantClient4.dll 
QtCore4.dll 
QtGui4.dll 
QtNetwork4.dll 
QtOpenGL4.dll 
QtSql4.dll  QtSvg4.dll 
QtXml4.dll
 C:\Qt\4.6.3\bin\
imageformats\qgif4.dll 
imageformats\qico4.dll 
imageformats\qjpeg4.dll 
imageformats\qmng4.dll 
imageformats\qsvg4.dll 
imageformats\qtiff4.dll
C:\Qt\4.6.3\plugins\imageformats\
mingwm10.dll c:\MinGW\bin\
bsddb (dir with all contents)
encodings (dir with all contents)
_abcoll.pyc 
codecs.pyc      
ConfigParser.pyc 
functools.pyc   
gettext.pyc 
linecache.pyc 
os.pyc         
Queue.pyc  
shlex.pyc  
SocketServer.pyc 
 stat.pyc       
sysconfig.pyc 
threading.pyc 
types.pyc    
_weakrefset.pyc
abc.pyc     
codeop.pyc      
copy.pyc         
__future__.pyc  
glob.pyc    
locale.pyc    
posixpath.pyc  
random.pyc 
shutil.pyc 
sre_compile.pyc   
string.pyc     
tabnanny.pyc  
tokenize.pyc  
UserDict.pyc 
webbrowser.pyc
bdb.pyc     
code.pyc        
copy_reg.pyc     
genericpath.pyc 
heapq.pyc   
ntpath.pyc    
py_compile.pyc 
repr.pyc   
site.pyc   
sre_constants.pyc 
struct.pyc     
tempfile.pyc  
token.pyc     
warnings.pyc
bisect.pyc  
collections.pyc 
fnmatch.pyc      
getopt.pyc      
keyword.pyc 
optparse.pyc  
qtiUtil.pyc    
re.pyc     
socket.pyc 
sre_parse.pyc     
subprocess.pyc 
textwrap.pyc  
traceback.pyc 
weakref.pyc
(only if you compiled with python support)
(note: if for any of these you don't find the *.pyc file, you can simply copy the equivalent *.py file)
(The *.pyc files are automatically created from the corresponding *.py when needed)

c:\python27\Lib


Note1: some of these files are actually not needed, but I prefer to put them anyway just in case.
Note2: if you don't care about wasting a few Mb of hard disk, the simplest thing is to copy the whole content of c:\python27\Lib
 
python27.dll
(only if you compiled with python support)
c:\WINDOWS\system32
sip.pyd
(only if you compiled with python support)
c:\python27\Lib\site-packages  
PyQt4\__init__.py
PyQt4\QtGui.pyd
PyQt4\QtCore.pyd
(only if you compiled with python support)
c:\pyqt\  ; c:\pyqt\QtCore ; c:\pyqt\QtGui
PyQt4\uic
(copy the whole uic directory)
(only if you compiled with python support)
c:\pyqt\pyuic\uic  ;
README.txt http://www.cells.es/Members/cpascual/files/
translations\ Download any wanted translation file (.qm extension) from:
 http://soft.proindependent.com/translations.html
and put it in the translations subdirectory of your distribution directory.
Manual\
If you compiled the manual yourself:
Copy the contents of c:\qtiplot-0.9.8.3\manual\html into the Manual subdirectory of your distribution dir.

If you didn't compile the manual yourself, you can download the html from:
http://soft.proindependent.com/manuals.html
and put in under the Manual subdirectory of your distribution directory.
Alternatively, you can also copy the manual directory from one of the official demo binaries.

That's it. Qtiplot can be launched form this distribution directory and it can be zipped and copied to a different machine.

The final tree structure of my distribution directory looks like:

qtiplot_0.9.8.3-3-Unofficial/
├── bsddb
│   ├── test
│   │   ├── __init__.py
│   │   ├── test_all.py
│   │   ├── test_associate.py
│   │   ├── test_basics.py
│   │   ├── test_compare.py
│   │   ├── test_compat.py
│   │   ├── test_cursor_pget_bug.py
│   │   ├── test_dbenv.py
│   │   ├── test_dbobj.py
│   │   ├── test_db.py
│   │   ├── test_dbshelve.py
│   │   ├── test_dbtables.py
│   │   ├── test_distributed_transactions.py
│   │   ├── test_early_close.py
│   │   ├── test_fileid.py
│   │   ├── test_get_none.py
│   │   ├── test_join.py
│   │   ├── test_lock.py
│   │   ├── test_misc.py
│   │   ├── test_pickle.py
│   │   ├── test_queue.py
│   │   ├── test_recno.py
│   │   ├── test_replication.py
│   │   ├── test_sequence.py
│   │   └── test_thread.py
│   ├── dbobj.py
│   ├── db.py
│   ├── dbrecio.py
│   ├── dbshelve.py
│   ├── dbtables.py
│   ├── dbutils.py
│   └── __init__.py
├── doc
│   ├── gpl_licence.txt
│   └── README.html
├── encodings
│   ├── aliases.py
│   ├── aliases.pyc
│   ├── ascii.py
│   ├── base64_codec.py
│   ├── big5hkscs.py
│   ├── big5.py
│   ├── bz2_codec.py
│   ├── charmap.py
│   ├── cp037.py
│   ├── cp1006.py
│   ├── cp1026.py
│   ├── cp1140.py
│   ├── cp1250.py
│   ├── cp1251.py
│   ├── cp1252.py
│   ├── cp1252.pyc
│   ├── cp1253.py
│   ├── cp1254.py
│   ├── cp1255.py
│   ├── cp1256.py
│   ├── cp1257.py
│   ├── cp1258.py
│   ├── cp424.py
│   ├── cp437.py
│   ├── cp437.pyc
│   ├── cp500.py
│   ├── cp720.py
│   ├── cp737.py
│   ├── cp775.py
│   ├── cp850.py
│   ├── cp852.py
│   ├── cp855.py
│   ├── cp856.py
│   ├── cp857.py
│   ├── cp858.py
│   ├── cp860.py
│   ├── cp861.py
│   ├── cp862.py
│   ├── cp863.py
│   ├── cp864.py
│   ├── cp865.py
│   ├── cp866.py
│   ├── cp869.py
│   ├── cp874.py
│   ├── cp875.py
│   ├── cp932.py
│   ├── cp949.py
│   ├── cp950.py
│   ├── euc_jis_2004.py
│   ├── euc_jisx0213.py
│   ├── euc_jp.py
│   ├── euc_kr.py
│   ├── gb18030.py
│   ├── gb2312.py
│   ├── gbk.py
│   ├── hex_codec.py
│   ├── hp_roman8.py
│   ├── hz.py
│   ├── idna.py
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── iso2022_jp_1.py
│   ├── iso2022_jp_2004.py
│   ├── iso2022_jp_2.py
│   ├── iso2022_jp_3.py
│   ├── iso2022_jp_ext.py
│   ├── iso2022_jp.py
│   ├── iso2022_kr.py
│   ├── iso8859_10.py
│   ├── iso8859_11.py
│   ├── iso8859_13.py
│   ├── iso8859_14.py
│   ├── iso8859_15.py
│   ├── iso8859_16.py
│   ├── iso8859_1.py
│   ├── iso8859_2.py
│   ├── iso8859_3.py
│   ├── iso8859_4.py
│   ├── iso8859_5.py
│   ├── iso8859_6.py
│   ├── iso8859_7.py
│   ├── iso8859_8.py
│   ├── iso8859_9.py
│   ├── johab.py
│   ├── koi8_r.py
│   ├── koi8_u.py
│   ├── latin_1.py
│   ├── mac_arabic.py
│   ├── mac_centeuro.py
│   ├── mac_croatian.py
│   ├── mac_cyrillic.py
│   ├── mac_farsi.py
│   ├── mac_greek.py
│   ├── mac_iceland.py
│   ├── mac_latin2.py
│   ├── mac_romanian.py
│   ├── mac_roman.py
│   ├── mac_turkish.py
│   ├── mbcs.py
│   ├── palmos.py
│   ├── ptcp154.py
│   ├── punycode.py
│   ├── quopri_codec.py
│   ├── raw_unicode_escape.py
│   ├── rot_13.py
│   ├── shift_jis_2004.py
│   ├── shift_jis.py
│   ├── shift_jisx0213.py
│   ├── string_escape.py
│   ├── tis_620.py
│   ├── undefined.py
│   ├── unicode_escape.py
│   ├── unicode_internal.py
│   ├── utf_16_be.py
│   ├── utf_16_le.py
│   ├── utf_16.py
│   ├── utf_32_be.py
│   ├── utf_32_le.py
│   ├── utf_32.py
│   ├── utf_7.py
│   ├── utf_8.py
│   ├── utf_8_sig.py
│   ├── uu_codec.py
│   └── zlib_codec.py
├── fitPlugins
│   ├── explin.dll
│   ├── exp_saturation.dll
│   ├── fitRational0.dll
│   ├── fitRational1.dll
│   └── planck_wavelength.dll
├── imageformats
│   ├── qgif4.dll
│   ├── qico4.dll
│   ├── qjpeg4.dll
│   ├── qmng4.dll
│   ├── qsvg4.dll
│   └── qtiff4.dll
├── manual
│   └── html
│       ├── common
│       ├── equations
│       ├── icons
│       ├── pics
│       ├── tutorial
│       ├── qtiplot.adp
│       └── qtiplot.css
├── PyQt4
│   ├── uic
│   │   ├── Compiler
│   │   ├── Loader
│   │   ├── port_v2
│   │   ├── port_v3
│   │   ├── widget-plugins
│   │   ├── driver.py
│   │   ├── exceptions.py
│   │   ├── icon_cache.py
│   │   ├── __init__.py
│   │   ├── objcreator.py
│   │   ├── properties.py
│   │   ├── pyuic.py
│   │   └── uiparser.py
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── QtCore.pyd
│   └── QtGui.pyd
├── translations
│   └── qt
├── _abcoll.pyc
├── abc.pyc
├── bdb.pyc
├── bisect.pyc
├── codecs.pyc
├── codeop.pyc
├── code.pyc
├── collections.pyc
├── ConfigParser.pyc
├── copy.pyc
├── copy_reg.pyc
├── fnmatch.pyc
├── functools.pyc
├── __future__.pyc
├── genericpath.pyc
├── getopt.pyc
├── gettext.pyc
├── glob.pyc
├── heapq.pyc
├── keyword.pyc
├── linecache.pyc
├── locale.pyc
├── mingwm10.dll
├── ntpath.pyc
├── optparse.pyc
├── origin2.dll
├── os.pyc
├── posixpath.pyc
├── py_compile.pyc
├── python27.dll
├── Qt3Support4.dll
├── QtAssistantClient4.dll
├── QtCore4.dll
├── QtGui4.dll
├── qtiplot.exe
├── qtiplot_logo.png
├── qtiplotrc.py
├── qtiUtil.py
├── qtiUtil.pyc
├── qti_wordlist.txt
├── QtNetwork4.dll
├── QtOpenGL4.dll
├── QtSql4.dll
├── QtSvg4.dll
├── QtXml4.dll
├── quazip.dll
├── Queue.pyc
├── qwtplot3d.dll
├── random.pyc
├── repr.pyc
├── re.pyc
├── shlex.pyc
├── shutil.pyc
├── sip.pyd
├── site.pyc
├── socket.pyc
├── SocketServer.pyc
├── sre_compile.pyc
├── sre_constants.pyc
├── sre_parse.pyc
├── stat.pyc
├── string.pyc
├── struct.pyc
├── subprocess.pyc
├── sysconfig.pyc
├── tabnanny.pyc
├── tempfile.pyc
├── textwrap.pyc
├── threading.pyc
├── tokenize.pyc
├── token.pyc
├── traceback.pyc
├── types.pyc
├── UserDict.pyc
├── warnings.pyc
├── weakref.pyc
├── _weakrefset.pyc
└── webbrowser.pyc
 

Contact information

If you have any comments, questions, or suggestions, feel free to contact me.

Document Actions