TSP Solver and Generator Installation Guide
===========================================
Thank you for trying **TSP Solver and Generator**. This document will
guide you through the steps necessary to compile and run **TSPSG**.
1. Requirements
---------------
To be able compile **TSPSG** you need to have
*[Qt libraries](http://qt-project.org/)*. The minimum supported version
of *Qt* is **4.5.0**. The recommended version is **4.6.x** or higher.
**NOTE:** Please, note that there will be some regressions in
functionality if your version of *Qt* is lower than the recommended.
2. Assumptions
--------------
This guide assumes that you already have *Qt* libraries and all
necessary prerequisites installed.
Also, the following assumptions are made:
- For **Linux/UNIX/BSD**: `lrelease` and `qmake` are avilable in
`$PATH`.
- For **Windows** (*MinGW*) and **Symbian**: you have installed *Qt
SDK* or prebuilt libraries and have Start Menu items for *Qt* tools.
- For **Windows** (*Visual Studio*) and **Windows Mobile**: the *Qt*
libraries reside in `C:\Qt\`.
- For **Windows Mobile**: *Windows Mobile 5.0 Pocket PC SDK* or later
is installed.
3. Supported Platforms
----------------------
**TSPSG** is oficially supported and tested on the following platforms:
- **Linux**: *Gentoo AMD64* and *Kubuntu 9.10 64-bit AMD*.
- **Windows**: *Windows XP 32-bit* and *Windows 7 64-bit*.
- **Windows Mobile**: *Windows Mobile 6.5 Professional Edition*.
4. Building and Installation
----------------------------------------------
### 4.1. Common Information ###
To be able ot build **TSPSG** you need to have the following *Qt*
modules: *QtCore*, *QtGui* and *QtSvg*. The first two are required, the
last one is optional. To get support for additional image formats (i.e.,
**JPEG** and **TIFF**) you'll additionally need corresponding *Qt
imageformats* plugins.
If you want to build **TSPSG** without **SVG** support add `nosvg` to
*qmake* `CONFIG` parameter, so that *qmake* command will typically be:
qmake CONFIG+=release CONFIG+=nosvg
This way you will not depend on *QtSvg* module but will not be able to
export solution graph in **SVG** format.
**TSPSG** uses *qmake* `PREFIX` parameter to determine installation path
for make install command. If you don't specify it when running qmake, it
will be assigned the default value depending on the platform:
| Platform | Default `PREFIX` value |
|-----------------------|-----------------------------------------|
| **Linux/UNIX/BSD** | `/usr` |
| **Windows** | `%PROGRAMFILES%` environment variable\* |
| **Windows CE/Mobile** | `\Program Files` |
| **Symbian** | *\* |
\* - usually, it is `C:\Program Files`.
**NOTE:** Please, note that there are no installation and/or packaging
rules for **MacOS** and other platforms not mentioned in this table.
By default, **TSPSG** uses precompiled header when being built. If you
experience problems with it you may add `CONFIG+=nopch` parameter to
*qmake* to disable the generation and use of the precompiled header.
### 4.2. General Procedure ###
On most platforms the general building and installation procedure is:
1. Run `lrelease` to generate binary translation files (*.qm*) from
the source (*.ts*).
2. Run `qmake` with `CONFIG+=release` parameter to generate makefiles.
3. Run `make` utility (e.g., *make*, *nmake*, *mingw32-make*) to build
**TSPSG**.
4. Run `make` utility with `install` parameter.
**NOTE:** It is important to run `lrelease` before `qmake`, or `qmake`
will not "pick up" the translations when generating installation rules.
### 4.3. Linux/UNIX/BSD ###
Open a shell, navigate to the directory where you have **TSPSG** source
downloaded and type
tar xvjf tspsg--src.tar.bz2
cd tspsg--src
where *\* is the version of **TSPSG** you downloaded. Now run
lrelease tspsg.pro
qmake tspsg.pro
make
In some cases you may need to type
qmake tspsg.pro CONFIG+=release
If make step finished without errors you can install **TSPSG** by
running
sudo make install
or
su
make install
depending on your distribution.
The executable goes to `/bin`; *COPYING*, *ChangeLog.md*,
*README.md* and *INSTALL.md* go to `/share/doc/TSPSG-`.
### 4.4. Windows ###
**TSPSG** will be installed to `\TSPSG` folder.
**NOTE:** Please, read the [Section 7](#s7) after reading this Section.
#### 4.4.1. Using MinGW ####
Unpack the downloaded source code of **TSPSG** with your favourite
compression software. Now launch the **Qt Command Prompt** from the
Start Menu, navigate to the directory where you unpacked the source and
run
lrelease tspsg.pro
qmake tspsg.pro CONFIG+=release
mingw32-make
**NOTE:** Make process may fail with a crash of *windres.exe*. If
you've run into this issue, please, read the [Section 6.1](#s61).
If make step finished without errors you can install **TSPSG** by
running
mingw32-make install
#### 4.4.2. Using Visual Studio ####
Unpack the downloaded source code of **TSPSG** with your favourite
compression software. Now launch the **Visual Studio Command Prompt**
from the Start Menu, navigate to the directory where you unpacked the
source and run
C:\Qt\bin\lrelease tspsg.pro
C:\Qt\bin\qmake tspsg.pro CONFIG+=release
nmake
If *make* step finished without errors you can install **TSPSG** by
running
nmake install
### 4.5. Windows CE/Mobile ###
Unpack the downloaded source code of **TSPSG** with your favourite
compression software. Now launch the **Visual Studio Command Prompt**
from the Start Menu and run
set PATH=C:\Qt\bin;%PATH%
setcepaths wincewm50pocket-msvc2008
Now navigate to the directory where you unpacked the source and run
lrelease tspsg.pro
qmake tspsg.pro CONFIG+=release
nmake
There is no automated installation process for **Windows Mobile** build.
To install **TSPSG** on your PDA you need to create a folder on your
device and copy the following files to it:
- *tspsg.exe* from release folder in the source directory.
- *QtCore4.dll* and *QtGui4.dll* from `C:\Qt\bin` folder.
- *msvcr90.dll* from
`C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\dll\armv4i`
folder.
- all *.qm* files from `l10n` folder in the source directory to
`l10n` subfolder.
### 4.6. Symbian ###
Unpack the downloaded source code of **TSPSG** with your favourite
compression software. Now launch the **Qt for Symbian Command Prompt**
from the Start Menu, navigate to the directory where you unpacked the
source and run
lrelease tspsg.pro
qmake tspsg.pro CONFIG+=release
make release-gcce
**WARNING:** You need to unpack source code to the same drive as **Symbian
SDK** and the path must not contain any spaces or **TSPSG** won't build.
If make step finished without errors you can generate sis installation
file by running
make sis
You'll get *tspsg.sis* file in the source directory. Copy it to your
phone and run or install using **Nokia PC Suite**.
**NOTE:** You need to install *Qt* libraries on your device before
installing **TSPSG**. Usually, it should be enough to install
*qt_installer.sis* from the *Qt* installation directory.
Alternatively, if you have installed **Nokia Smart Installer** you can
run
make installer_sis
You'll get an *tspsg_installer.sis* that will automatically download and
install the required *Qt* libraries on **TSPSG** installation.
**NOTE:** Please, be aware that you have to sign the sis file to be able
to install it on your device. You can use [Open Signed Online][1] to
quickly sign the sis file for your device. Alternatively, you can try to
enable the installation of self-signed files in the phone settings.
Please, refer to your phone manual on the instructions how to do this.
### 4.7. Other Platforms, Supported by Qt ###
While **TSPSG** is oficially supported only on **Linux**, **Windows**
and **Windows Mobile** it should be possible to compile it on any
platform, supported by *Qt*. To do so, please, refer to the
[Section 4.2](#s42) for the general build and installation procedure.
5. Uninstallation
-----------------
Usually, it is enough to replace `install` parameter with `uninstall`
in the installation command from the [Section 4](#s4). Also, you can
manually delete all installed **TSPSG** files and directories.
6. Troubleshooting
------------------
### 6.1. WINDRES.EXE Crash ###
When building under **Windows** using **MinGW toolchain** make process
may fail with *windres.exe* crash (access violation). This is a known
bug in *windres.exe* regarding processing resource files with *UTF-8
(cp65001)* encoding ([Bug 10165][2]). To be able to successfully build
**TSPSG** you will need to download and replace *windres.exe* with a
fixed version. To do this:
1. Open in your
favourite browser.
2. Find and download the latest version of GNU Binutils. At the time
of writing this guide it was
*binutils-2.20.1-2-mingw32-bin.tar.gz*.
3. Unpack the file *bin\windres.exe* from the downloaded archive to
`\mingw\bin\` replacing the existing
one.
4. Now run
mingw32-make distclean
in the **TSPSG** directory and repeat the installation process.
7\. Notes
--------------------------
*qmake* doesn't always enclose installation paths in quotes. This may
cause some files not to be installed or removed when their path
contains spaces. In this case it is safe to delete these files and
**TSPSG** installation directory manually.
[1]: https://www.symbiansigned.com/app/page/public/openSignedOnline.do
[2]: http://sourceware.org/bugzilla/show_bug.cgi?id=10165