RPM Spec file dependencies with Qt Installer - qt

I have developed an application using QWebEngine from an installer which I downloaded from download.qt.io. Since Ubuntu 14.04 only supports up to Qt 5.8 that's the version I installed.
Now my application build has an RPM spec file with "Requires" and "BuildRequires" tags where packages are added for dependencies:
Example:
BuildRequires: build-essential
Requires: qt5-default
Requires: qt5webengine5-dev
Since I'm installing Qt using an installer how do I indicate this in "BuildRequires" or "Requires" since there are no packages associated with this. The installer just places the needed include and libraries in /opt/Qt5.8.0 which I find and point to in my Makefile. Is there a way to indicate this in RPM? Maybe the library names?

The RPM can only list packages provided by the distro. What those package names are depends on each distro. So it's not very portable. If you're targeting OpenSUSE for example, your RPM needs to use OpenSUSE package names.
If you're looking to provide a download of your application that runs on many distros, you can look into providing an AppImage instead:
https://appimage.org
To create an AppImage of a Qt application, you can use linuxdeployqt:
https://github.com/probonopd/linuxdeployqt

Related

MSYS2 Qt-creator examples not showing

I have installed qt-creator on windows 10 using msys2.
I installed packages according to https://wiki.qt.io/MSYS2
base-devel git mercurial cvs wget p7zip
perl ruby python2 mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
mingw-w64-i686-qt-creator mingw-w64-x86_64-qt-creator
I had previously installed qt from the official site but the mingw version is too old and I'd rather not have two mingw versions installed.
I have existing C:\msys64\mingw64\share\qt5\examples folder but it seems there are some folders missing from C:\msys64\mingw64\share\qt5\doc compared to the official install. Maybe that has something to do with it.
So the question: Is there a specific package I need to install so that the examples show up in the qt-creator examples page or something else?
I found in this place https://www.archlinux.org/packages/extra/any/qt5-examples/
decompress with
zstd -df qt5-examples-5.14.2-1-any.pkg.tar.zst
and then
tar xzf qt5-examples-5.14.2-1-any.pkg.tar
the examples are saved in /usr/share/doc/qt/examp,es
The qt-creator in msys2 distribution do not have examples installed. The msys2 also do not have separate package for it.
But as what #user3930978 found. You can use example package from archlinux site for workaround.
But unfortunately, msys2 qt5 configured with "-nomake examples" parameter. You need to modify generated file. The easiest way is still to install qt5 and creator with official full pack.

How do I create my .run file to install Qt 5.9.0 on 32-bit debian?

As per my information, Binaries (or offline/online installers) for installing Qt (>= 5.6) on 32-bit linux are not provided. For example, If I want to use Qt 5.9.0 on 32-bit linux (debian, specifically), the only option is to download Qt source and build it. I have successfully built Qt 5.9.0 on my 32-bit linux machine. But I have to do this on all my development PC's. Instead if I can build it once and create an installer somehow, that will save a lot of time. Is there a way to create offline installer (e.g. *.run files) for installing Qt 5.9.0 on 32-bit Linux (e.g. debian)?
As stated by #Velkan, Qt is available on 32 bit Debian from the official repos.
But, indeed, there is no 32-bit Linux installer from the Qt project.
Regarding copying a Qt install from a Debian PC to another, you do not need to create an installer. Just copy/tar/zip the directory in which Qt is installed. The only requirement is that you must keep the installation in the same absolute path as the Qt Core library has the path hardcoded in it and it is use for plugin detection.
NB1: It is possible to patch Qt Core library to change the hardcoded path and even make it relative. It is not officially documented but you can take a look in the sources of tools like windeployqt or the online installer
NB2: Do not use Qt 5.9.0, prefer 5.9.2. Both are forward and backward binary compatible, but the latter received bug fixes.

Choosing the right version of QT

On my Ubuntu 16.04, I have some packages installed (through Synaptic) that have QT version 5.5.1. And they seem to be needed by software that I have (TeXstudio, for instance).
But as a developer I am trying to use Qt 5.9.1, which I installed by downloading it from the QT website (like this). But when I run qmake, it runs the wrong version. How can I choose which version I want to use?
$ qmake --version
QMake version 3.0
Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu
But I want this one:
~/lib/Qt5.9.1/5.9.1/gcc_64/bin/qmake --version
QMake version 3.1
Using Qt version 5.9.1 in /home/diego/lib/Qt5.9.1/5.9.1/gcc_64/lib
I would like that all that when I'm building software or running software I have built (instead of software installed on the system) it uses 5.9.1. How can I do this?
You should run qmake with its full path:
$ ~/lib/Qt5.9.1/5.9.1/gcc_64/bin/qmake
If you don't want to type full path, you could prepend your local Qt directory to PATH environment variable. In order for runtime linker to find right libraries, you can add Qt directory to LD_LIBRARY_PATH. You could set QTDIR too, so tools like CMake find right Qt:
You could put following line in ~/.bashrc:
export QTDIR="~/lib/Qt5.9.1/5.9.1/gcc_64/"
export PATH="$QTDIR/bin:$PATH"
export LD_LIBRARY_PATH="$QTDIR/lib:$LD_LIBRARY_PATH"

Compiling third party libraries with Qt

I've been using OpenCV and Marble libraries compiled and linked with Qt. Every time I do it I have problems running cmake to make these libraries. it seems paths in the qt cmake files to other qt cmake files are incorrect. I get errors like:
CMake Error at CMakeLists.txt:67 (find_package):
By not providing "FindQt5DBus.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Qt5DBus", but
CMake did not find one.
Could not find a package configuration file provided by "Qt5DBus" with any
of the following names:
Qt5DBusConfig.cmake
qt5dbus-config.cmake
Add the installation prefix of "Qt5DBus" to CMAKE_PREFIX_PATH or set
"Qt5DBus_DIR" to a directory containing one of the above files. If
"Qt5DBus" provides a separate development package or SDK, be sure it has
been installed.
I can fix this in Ubuntu by running
sudo apt-get install qt5-default
This is fine in Ubuntu, but now I am trying to compile these libraries on mac and windows now. Anyone know a way to get a Qt with all of these paths already correct? tried the installer on windows and mac, and brew on mac. I don't really have time to play with fixing each one of these errors one by one
At least Qt 5.5 on Windows (using the Qt installer) should work out of the box. It has DBus included. Which Qt version are you using currently?

Should i make a rpm or deb package or use the Qt Installer Framework

I want to deploy my app cross platform for linux i am confused,
Should i build separate packages for Redhat and Debian or use an installer script like Qt Installer Framework
It depends on your exact desire, but ideally, you could do both.
Rpms, debs, and similar packages for other distributions are easier to obtain and install.
However, sometimes it takes the distrubtion a while to get your software into their package repositories. In those cases, having an installer like Qt does comes handy.

Resources