First Adventures with Qt 5

Developing with Qt is always interesting for me. First time I met Qt in 2010 when I was looking a nice GUI framework for cross-development. It has a simple and modern design. Many useful features are included, specially i18n and MVC framework which I like the most. My first adventure with Qt was writing a GUI test application for regular expressions. Unfortunately it had never been released. That was not a very good idea to release such a simple tool.

Since last two years I find myself developing applications for windows platform. Almost all of my clients have MS Windows installed on their workstations. (somebody should shout in their head). That’s why I prefer GTK+ and mostly Qt for development. Qt is very interesting to me. I like it the most for many reasons.

Qt 5.0.0 has been released recently. I can’t help to get my own atomic compilation of Qt. (see next par,) So downloaded sources and started to hack away to get it run on the stupid Windows platform. Surprisingly this was much much more complex that it should be…

EBO-Qt Manifest

EBO Qt logo

EBO-Qt is a project aimed to ease open-source development based on Qt platform on Microsoft Windows operating system. This project supports additional third-party libraries mainly from MinGW and other open-source softwares.

For developing Qt Applications you will need either MinGW compiler suite or Microsoft Visual C++ Compiler. Later one is not yet supported by this project. Though there is plan to add MSVC 2012 support in the near future.

 

You may want to use MinGW suite by Qt developers available at MinGW builds project. Take care of architecture and exception mechanism. This link from Qt wiki will guide you through choosing an appropriate compiler suite considering your needs.

In the case that you already have a compiler suite, you may want to download one or more of EBO components. See the next section for more details.

Components

All builds consists of these three main parts:

  • The SDK
  • Runtime Libs
  • The IDE

Software Development Kit

Unlike official SDK’s, EBO-SDK do not include a compiler nor IDE. This SDK is made up of headers and shared libraries needed to build Qt applications. It also eliminates an insane redundancy on windows reported here.

Runtime Libraries

Runtime Library installer makes it easier to deploy your Qt applications on various machines. This part is supposed to reduce redundancy of deployment. You no more need to ship all DLLs with your application. RLI copies Qt runtime libraries on the target machine and optionally adds their location to system’s PATH.

Notes:

  • Duo to inconvenience with deployment of applications using different versions of Qt, support for adding plugin path variable (QT_PLUGIN_PATH) to system environment has been dropped since 2013-01-13. Please consider about disabling that option in the case that you are using an older version of installer.
  • On Windows platform this is generally a bad idea to install libraries in somewhere visible in PATH scope. You should take care of collisions with other applications that need to link against Qt libraries and does not use EBO.

Integrated Development Environment (Qt Creator)

Qt Creator is available in two versions: standalone and native. if you are planing to use this IDE with a SDK other than which one provided by this project, you will need standalone version. Standalone installer contains everything needed to run Qt Creator. Else if you are planning to use SDK provided by this project, you may want to download native installer. This installer relies on system’s installed versions of Qt libraries. Either choose “add location of SDK’s binary files to system PATH” at installation time of SDK or choose similar option in the installation process of RLI to make run native IDE.

Third-party Tools and Libraries

Each subsystem is made up of several components. This section contains general description about components. For more details see each component’s section.

Tagging

We’ve used a strict convention to tag each package. Name of a package follows this format:

<name>-<version>-<abi>-<symbol_type>-<linkage_type>-<architecture>

All parts should be lower-case.

Name

Name of the package.

Version

Version string of the package. Usually three or four numbers like 2.6.1. Numbers might followed by a letter. If version string contains the dash character (`-‘), all occurrences will be replaced by underscore.

ABI

Application Binary Interface of package. Since this project aims only Windows operating system, the OS part of ABI is dropped. This tag is either mingw or msvc<XXXX> which XXX is either 2012, 2010, 2008 or 2005. There is no support for older versions of Visual Studio compiler.

Symbol Type

Can take one of releasedebug or release_debug values. Specifies either binaries contain debugging symbols or not. The release_debug value specifies that libraries containing debugging information has a different name than release libraries. It’s usual to add a suffix like `d’ to distinguish debug and release libraries. In the case that any executable is present in package, that will not contain a debugging symbols.

Linkage Type

Specifies linkage type of libraries. Can take one of dynamicstatic or dynamic_static values. Later one specifies that the libraries are available in both dynamic and static version.

EBO-Qt project consists these components:

Name Version Linkage Type Main page Status
ICU4c 50.1.1 Dynamic Release http://site.icu-project.org
OpenSSL 1.0.1c Dynamic Release http://www.openssl.org/
DBus 1.6.8 Dynamic Release http://www.freedesktop.org/wiki/
Software/dbus
Crypto++ 5.6.1 Dynamic + Static Release + Debug http://www.cryptopp.com/
MinGW 4.7.2 Release
Qt 5.0.0 Dynamic Release + Debug
Expat Release http://expat.sourceforge.net/
AGT 1.0.0 Dynamic + Static Release + Debug
KD Reports
KD Charts
KD SOAP
KD Tools
GammaRay
CGF
Qwt 6.0.2
Qwt Polar
Bisonc++
Flexc++
git + git cola

MinGW Compiler Suite

MinGW, a contraction of “Minimalist GNU for Windows”, is a minimalist development environment for native Microsoft Windows applications.

MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs. (It does depend on a number of DLLs provided by Microsoft themselves, as components of the operating system; most notable among these is MSVCRT.DLL, the Microsoft C runtime library. Additionally, threaded applications must ship with a freely distributable thread support DLL, provided as part of MinGW itself).

Dear robot

Dear robot
I did not forgot about you. I promise to redesign and fix your body and softwares for 2013 competitions.  Please forgive me for not having enough time for you. After passing my final exams, I will come back to you
Sincerely,
Your programmer, Soroush