This is the first post of the series of 3 posts regarding deployment process in Qt.
Deployment is one of the major steps in creating cross-platform applications. Generally speaking, deployment of the application is defined by a set of all actions or activities that makes a software system available for use. The general deployment process consists of several interrelated activities with possible transitions between them. Every software system is unique, the precise processes or procedures within each activity can hardly be defined. The deployment process is a general process that has to be customized according to the particular environment and specific requirements or characteristics.
Nowadays, there exist a lot of tools that allow to deploy cross-platform applications. For instance, according to DNSstuff, the top four software deployment tools in 2020 are:
– SolarWinds Patch Manager
– Octopus Deploy
In this series we will focus on the cross-platform application deployment tool that can be used in Qt.
Qt as a deployment tool
Qt is a full development framework with tools designed to streamline the creation of applications and user interface for desktop, embedded, or even mobile platforms. Qt consists of three main parts:
Qt Creator IDE -a powerful cross-platform integrated development environment, including UI designer tools and on-device debugging.
Tools and Toolchains – internationalization support, embedded
toolchains, build with CMake, and more.
There are two ways to deploy an application in Qt:
Shared Libraries (Frameworks on Mac)
Qt deployment – Static Linking
Deploy the application through static linking results in a stand-alone executable. The advantage is that you will only have a few files to deploy.
The disadvantages are that the executables are large and with no flexibility, because if you will have a new version of the application or new version of Qt, it will require the entire deployment process to be repeated. Another disadvantage with this type of deployment is that you cannot deploy plugins. The pros and cons of this approach are summarized below.
Qt deployment – Shared Libraries
Deploy of the application through shared libraries is the second way to deploy your application offered by Qt tool. It is more flexible and independent type of deployment. The shared library approach allows deploying plugin-based applications. Using this way, the user is able to independently upgrade the Qt library used by the application. If you want to use the same Qt libraries for a family of applications you must use the shared library approach. The disadvantage with the shared library approach is that you will get more files to deploy. If your application uses Qt libraries, remember that Qt libraries should be re-distributed with the application. The same situation appears when application uses Qt QML, because it also needs to ship the QML modules it uses. While deploying an application using the shared library approach you must ensure that the Qt libraries use the correct path to find Qt plugins, documentation, translation, and so on. To do this, you can use a qt.conf file.
Supported platforms by Qt
The procedure of deploying Qt applications is different for various platforms and depends on a chosen platform. Using Qt, you can write GUI applications once and deploy them across desktop, mobile and embedded operating systems without rewriting source code. Qt supports both, mobile and desktop platforms.
Supported desktop platforms
Supported mobile platforms
Universal Windows Platform (UWP)
Qt for WebAssembly
In conclusion, the application deployment process is one of the basic step on the road to application usability. There are many tools available to carry out this process. In a series of posts, we will focus on the open source Qt tool.
This post provides a general definition of the application deployment process along with basic description of the ways to deploy the application using the Qt tool and their advantages and disadvantages. The following posts will present the application deployment using the Qt tool on the iOS and Android platforms.