%general-entities; ]> $LastChangedBy$ $Date$ Qt-&qt5-version; Qt Introduction to Qt5 Qt5 is a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI) (in which cases Qt5 is classified as a widget toolkit), and also used for developing non-GUI programs such as command-line tools and consoles for servers. One of the major users of Qt5 is KDE Frameworks 5. &lfs74_checked; Package Information Download (HTTP): Download (FTP): Download MD5 sum: &qt5-md5sum; Download size: &qt5-size; Estimated disk space required: &qt5-buildsize; Estimated build time: &qt5-time; Qt5 Dependencies Required , , , , , and Recommended , , , , , , , , , , , , and Optional (QtWebKit HTML5 Video Support), (GTK+ Theme Support), libxkbcommon, or , , , and Required (Runtime) (if installing both Qt4 and Qt5 and installing in /usr) User Notes: Installation of Qt5 There are several ways to install a complicated package such as Qt5. The files are not completely position independent. Installation procedures execute the program pkg-config to determine the location of package executables, libraries, headers, and other files. For Qt5, pkg-config will look for the appropriate lib/pkgconfig/Qt5*.pc files which must be modified if relocating the package. These files are set up correctly by the build process. The default installation places the files in /usr/local/qt. Many distributions place the files in the system's /usr hierarchy. The package can also be installed in an arbitrary directory. The advantage of installing in /usr is that no updates to the /etc/ld.so.conf or /etc/man_db.conf files are required. The package files are distributed within several subdirectories of the /usr hierarchy. This is the method that most distributions use. The disadvantage of installing in /usr is that the executable filenames for Qt4 and Qt5 conflict if both packages are installed in the same directory. The instructions below give a workaround for this problem using the helper programs from . The advantage of installing Qt5 in a custom directory such as /opt/qt-&qt5-version; is that it keeps all the package files consolidated in a dedicated directory hierarchy. By using this method, an update can be made without overwriting a previous installation and users can easily revert to a previous version by changing one symbolic link or merely changing the PATH variable. It also allows a developer to maintain multiple versions of Qt4 or Qt5 for testing. If you did not install some of the recommended dependencies, examine ./configure --help output to check how to disable them or use internal versions bundled in the source tarball. If Qt5 is being reinstalled into the same directory as an existing instance, run the following commands from a console or non-Qt5 based window manager. It overwrites Qt5 libraries that should not be in use during the install process. Method 1: Installing in /usr Install Qt5 by running the following commands: If not also installing Qt4 into the /usr directory, change the entry for -bindir below to /usr/bin. sed -e "s:#if MNG:#if defined(MNG_VERSION_MAJOR)\n&:" \ -e "s:#endif:&\n#endif:" \ -i qtimageformats/config.tests/libmng/libmng.cpp ./configure -prefix /usr \ -sysconfdir /etc/xdg \ -bindir /usr/lib/qt5/bin \ -headerdir /usr/include/qt5 \ -archdatadir /usr/lib/qt5 \ -datadir /usr/share/qt5 \ -docdir /usr/share/doc/qt5 \ -translationdir /usr/share/qt5/translations \ -examplesdir /usr/share/doc/qt5/examples \ -confirm-license \ -opensource \ -dbus-linked \ -openssl-linked \ -system-sqlite \ -no-nis \ -nomake examples \ -opengl es2 \ -optimized-qmake && make Remove references to the build directory from the .pc files by running the following command: find . -name "*.pc" -exec perl -pi -e "s, -L$PWD/?\S+,,g" {} \; This package does not come with a test suite. Now, as the root user: make install && install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \ /usr/share/pixmaps/assistant-qt5.png && install -v -Dm644 qttools/src/designer/src/designer/images/designer.png \ /usr/share/pixmaps/designer-qt5.png && install -v -Dm644 qttools/src/linguist/linguist/images/icons/linguist-128-32.png \ /usr/share/pixmaps/linguist-qt5.png && install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \ /usr/share/pixmaps/qdbusviewer-qt5.png Remove references to the build directory from installed files by running the following commands as the root user: sed -i -e "s:$PWD/qtbase:/usr/lib/qt5:g" \ /usr/lib/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri && find /usr/lib/lib{qgsttools_p,Qt5*}.prl -exec sed -i -e \ '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \; If you didn't modify the -bindir switch above, symlink the Qt5 executables into /usr/bin by running the following commands as the root user: for file in /usr/lib/qt5/bin/* do ln -sfv ../lib/qt5/bin/$(basename $file) /usr/bin/$(basename $file)-qt5 done Method 2: Installing in /opt/qt-&qt5-version; This section provides an alternate way to install Qt5 by installing almost all of the files in the /opt directory. This allows management of all Qt5 related files in one unit. For instance, a new version of Qt5 can be installed without over-writing the existing installation and entire Qt5 instances can be easily removed. However, it has the disadvantage of needing some extra configuration and you need to switch manually between Qt4 and Qt5 executables when needed. sed -e "s:#if MNG:#if defined(MNG_VERSION_MAJOR)\n&:" \ -e "s:#endif:&\n#endif:" \ -i qtimageformats/config.tests/libmng/libmng.cpp QT5DIR=/opt/qt-&qt5-version; ./configure -prefix $QT5DIR \ -sysconfdir /etc/xdg \ -confirm-license \ -opensource \ -dbus-linked \ -openssl-linked \ -system-sqlite \ -plugin-sql-sqlite \ -no-nis \ -nomake examples \ -opengl es2 \ -optimized-qmake && make Now, as the root user: make install && install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \ /usr/share/pixmaps/assistant-qt5.png && install -v -Dm644 qttools/src/designer/src/designer/images/designer.png \ /usr/share/pixmaps/designer-qt5.png && install -v -Dm644 qttools/src/linguist/linguist/images/icons/linguist-128-32.png \ /usr/share/pixmaps/linguist-qt5.png && install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \ /usr/share/pixmaps/qdbusviewer-qt5.png Remove references to the build directory from installed files by running the following commands as the root user: find $QT5DIR -name qt_lib_bootstrap_private.pri \ -exec sed -i -e "s:$PWD/qtbase:/$QT5DIR/lib/:g" {} \; && find $QT5DIR -name \*.prl \ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; Symlink the Qt5 executables into /usr/bin by running the following commands as the root user: ln -svf $QT5DIR /opt/qt5 && for file in /opt/qt5/bin/*; do ln -sfv $file /usr/bin/$(basename $file)-qt5 done Command Explanations sed -e "..." -e "..." -i ...: This command fixes detection of libmng 2.0. -confirm-license: Accept license without prompting user during configuration. -opensource: Install the opensource version of Qt. -release: This switch disables building with debugging symbols. -nomake examples: This switch disables building of the example programs included in the source tarball. Remove it if you want to build them. -system-sqlite: This switch enables use of the system version of SQLite. -no-nis: This switch disables support for Network Information Service (NIS) which has been removed from recent versions of Glibc. -dbus-linkend -openssl-linkend: These switches enable explicit linking of the D-Bus and OpenSSL libraries into Qt5 libraries instead of dlopen()-ing them. -opengl es2: This switch enables OpenGL ES2 support in Qt5. -optimized-qmake: This switch enables building of the optimized qmake program. Configuring Qt5 Configuration Information Create the menu entries for installed applications by running the following commands root user: install -dm755 /usr/share/applications cat > /usr/share/applications/assistant-qt5.desktop << "EOF" [Desktop Entry] Name=Qt5 Assistant Comment=Shows Qt5 documentation and examples Exec=assistant-qt5 Icon=assistant-qt5 Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;Documentation; EOF cat > /usr/share/applications/designer-qt5.desktop << "EOF" [Desktop Entry] Name=Qt5 Designer GenericName=Interface Designer Comment=Design GUIs for Qt5 applications Exec=designer-qt5 Icon=designer-qt5 MimeType=application/x-designer; Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development; EOF cat > /usr/share/applications/linguist-qt5.desktop << "EOF" [Desktop Entry] Name=Qt5 Linguist Comment=Add translations to Qt5 applications Exec=linguist-qt5 Icon=linguist-qt5 MimeType=text/vnd.trolltech.linguist;application/x-linguist; Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development; EOF cat > /usr/share/applications/qdbusviewer-qt5.desktop << "EOF" [Desktop Entry] Name=Qt5 QDbusViewer GenericName=D-Bus Debugger Comment=Debug D-Bus applications Exec=qdbusviewer-qt5 Icon=qdbusviewer-qt5 Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;Debugger; EOF If you have installed Qt5 in /usr, you can skip rest of this section. If you installed Qt5 in a location other than /usr, you need to update the following configuration files so that Qt5 is correctly found by other packages and system processes. As the root user, update the /etc/ld.so.conf file and the dynamic linker's run-time cache file: cat >> /etc/ld.so.conf << EOF # Begin Qt addition /opt/qt5/lib # End Qt addition EOF ldconfig /etc/ld.so.conf As the root user, create the /etc/profile.d/qt5.sh file: cat > /etc/profile.d/qt5.sh << EOF # Begin /etc/profile.d/qt5.sh QT5DIR=/opt/qt5 pathappend /opt/qt5/bin PATH pathappend /opt/qt5/lib/pkgconfig PKG_CONFIG_PATH export QT5DIR # End /etc/profile.d/qt5.sh EOF If you also installed Qt4 and need to use the Qt5 version of an executable such as qmake for building a program, make sure that the Qt5 bin directory is listed prior to the Qt5 bin directory in the PATH variable. Contents Installed Programs Installed Libraries Installed Directories assistant-qt5, designer-qt5, lconvert-qt5, linguist-qt5, lrelease-qt5, lupdate-qt5, moc-qt5, pixeltool-qt5, qcollectiongenerator-qt5, qdbuscpp2xml-qt5, qdbus-qt5, qdbusviewer-qt5, qdbusxml2cpp-qt5, qdoc-qt5, qhelpconverter-qt5, qhelpgenerator-qt5, qmake-qt5, qml1plugindump-qt5, qmlbundle-qt5, qmlimportscanner-qt5, qmlmin-qt5, qmlplugindump-qt5, qmlprofiler-qt5, qml-qt5, qmlscene-qt5, qmltestrunner-qt5, qmlviewer-qt5, qtpaths-qt5, rcc-qt5, syncqt.pl-qt5, uic-qt5, xmlpatterns-qt5, and xmlpatternsvalidator-qt5 libqgsttools_p.so, libQt5Bluetooth.so, libQt5Bootstrap.a, libQt5CLucene.so, libQt5Concurrent.so, libQt5Core.so, libQt5DBus.so, libQt5Declarative.so, libQt5DesignerComponents.so, libQt5Designer.so, libQt5Gui.so, libQt5Help.so, libQt5MultimediaQuick_p.so, libQt5Multimedia.so, libQt5MultimediaWidgets.so, libQt5Network.so, libQt5Nfc.so, libQt5OpenGLExtensions.a, libQt5OpenGL.so, libQt5PlatformSupport.a, libQt5Positioning.so, libQt5PrintSupport.so, libQt5QmlDevTools.a, libQt5Qml.so, libQt5QuickParticles.so, libQt5Quick.so, libQt5QuickTest.so, libQt5Script.so, libQt5ScriptTools.so, libQt5Sensors.so, libQt5SerialPort.so, libQt5Sql.so, libQt5Svg.so, libQt5Test.so, libQt5UiTools.a, libQt5WebKit.so, libQt5WebKitWidgets.so, libQt5Widgets.so, libQt5X11Extras.so, libQt5XmlPatterns.so, and libQt5Xml.so /usr/include/qt5, /usr/lib/qt5, /usr/share/doc/qt5, and /usr/share/qt5 Short Descriptions assistant-qt5 is a tool for presenting on-line documentation. assistant-qt5 designer-qt5 is a full-fledged GUI builder. It includes powerful features such as preview mode, automatic widget layout, support for custom widgets, and an advanced property editor. designer-qt5 linguist-qt5 provides support for translating applications into local languages. linguist-qt5 lrelease-qt5 is a simple command line tool. It reads a Qt project file and produces message files used by the application. lrelease-qt5 lupdate-qt5 reads a Qt project file, finds the translatable strings in the specified source, header and Qt Designer interface files, and produces or updates the translation files listed in the project file. lupdate-qt5 moc-qt5 generates Qt meta object support code. moc-qt5 pixeltool-qt5 is a desktop magnifier and as you move your mouse around the screen it will show the magnified contents in its window. pixeltool-qt5 qmake-qt5 uses information stored in project files to determine what should go in the makefiles it generates. qmake-qt5 rcc-qt5 is a resource compiler used in conjunction with designer. rcc-qt5 uic-qt5 is a Qt user interface compiler. uic-qt5