Qt5 development primer


  • Moderators

    [quote author="Munawwar" date="1368987136"]I was getting a "runtime/CodeCache.cpp
    The bug is not reproducible, so it is likely a hardware or OS problem."
    error when using make -j 4.
    I had to do a make without specifying '-j 4' (which "I think is serial execution":http://www.gnu.org/software/make/manual/html_node/Parallel.html) for the build to work.[/quote]What CPU, and how much RAM, do you have?



  • I'm having problems getting Qt 5.1 to compile:

    In file included from ../../include/QtWidgets/qgraphicsscene.h:1:0,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsview.h:48,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsview_p.h:56,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/qgraphicsview_p.h:1,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsitem_p.h:59,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicswidget_p.h:57,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/qgraphicswidget_p.h:1,
    from kernel/qaction_p.h:58,
    from kernel/qactiongroup.cpp:46:
    ../../include/QtWidgets/../../src/widgets/graphicsview/qgraphicsscene.h:160:24: error: missing binary operator before token "("
    ../../include/QtWidgets/../../src/widgets/graphicsview/qgraphicsscene.h:167:24: error: missing binary operator before token "("
    ../../include/QtWidgets/../../src/widgets/graphicsview/qgraphicsscene.h:174:24: error: missing binary operator before token "("
    In file included from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsitem_p.h:56:0,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicswidget_p.h:57,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/qgraphicswidget_p.h:1,
    from kernel/qaction_p.h:58,
    from kernel/qaction.cpp:46:
    ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsitem.h:176:24: error: missing binary operator before token "("
    ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsitem.h:240:24: error: missing binary operator before token "("
    ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsitem.h:298:24: error: missing binary operator before token "("
    In file included from ../../include/QtWidgets/qgraphicsscene.h:1:0,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsview.h:48,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsview_p.h:56,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/qgraphicsview_p.h:1,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicsitem_p.h:59,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/../../../../../src/widgets/graphicsview/qgraphicswidget_p.h:57,
    from ../../include/QtWidgets/5.1.0/QtWidgets/private/qgraphicswidget_p.h:1,
    from kernel/qaction_p.h:58,
    from kernel/qaction.cpp:46:
    ../../include/QtWidgets/../../src/widgets/graphicsview/qgraphicsscene.h:160:24: error: missing binary operator before token "("
    ../../include/QtWidgets/../../src/widgets/graphicsview/qgraphicsscene.h:167:24: error: missing binary operator before token "("
    ../../include/QtWidgets/../../src/widgets/graphicsview/qgraphicsscene.h:174:24: error: missing binary operator before token "("
    In file included from kernel/qactiongroup.cpp:382:0:
    .moc/release-shared/moc_qactiongroup.cpp:15:2: error: #error "This file was generated using the moc from 5.1.0. It"
    .moc/release-shared/moc_qactiongroup.cpp:16:2: error: #error "cannot be used with the include files from this version of Qt."
    .moc/release-shared/moc_qactiongroup.cpp:17:2: error: #error "(The moc has changed too much.)"
    In file included from ../../include/QtWidgets/qaction.h:1:0,
    from kernel/qactiongroup.h:45,
    from kernel/qactiongroup.cpp:42:
    ../../include/QtWidgets/../../src/widgets/kernel/qaction.h:61:32: error: expected initializer before ‘:’ token
    In file included from kernel/qaction.cpp:1313:0:
    .moc/release-shared/moc_qaction.cpp:15:2: error: #error "This file was generated using the moc from 5.1.0. It"
    .moc/release-shared/moc_qaction.cpp:16:2: error: #error "cannot be used with the include files from this version of Qt."
    .moc/release-shared/moc_qaction.cpp:17:2: error: #error "(The moc has changed too much.)"
    In file included from kernel/qaction.cpp:42:0:
    kernel/qaction.h:61:32: error: expected initializer before ‘:’ token
    make[3]: *** [.obj/release-shared/qactiongroup.o] Error 1
    make[3]: *** Waiting for unfinished jobs....
    make[3]: *** [.obj/release-shared/qaction.o] Error 1
    make[3]: Leaving directory /media/usb_700_ext4/qt5/qtbase/src/widgets' make[2]: *** [sub-widgets-make_first] Error 2 make[2]: Leaving directory/media/usb_700_ext4/qt5/qtbase/src'
    make[1]: *** [sub-src-make_first] Error 2
    make[1]: Leaving directory `/media/usb_700_ext4/qt5/qtbase'
    make: *** [module-qtbase-make_first] Error 2
    allen@ubuntu:/media/usb_700_ext4/qt5$

    Can anybody explain why?


  • Moderators

    [quote author="allenck" date="1369345509"].moc/release-shared/moc_qactiongroup.cpp:15:2: error: #error “This file was generated using the moc from 5.1.0. It”
    .moc/release-shared/moc_qactiongroup.cpp:16:2: error: #error “cannot be used with the include files from this version of Qt.”[/quote]It looks like you have multiple versions of Qt in your environment. Remove the older one from your PATH, clean your build tree (i.e. delete all the files that have been compiled so far), and try again.

    Also, what compiler are you using? How did you configure + build Qt?



  • Thanks. I checked the requirements as it pertained to environment variables but didn't check the path. Undoubtedly that is the reason as the compile seems to be working OK, so far, on another machine.

    The compiler is g++ and I was using these configuration settings:
    ./configure -prefix $PWD/qtbase -opensource -nomake tests -system-sqlite -plugin-sql-sqlite -plugin-sql-odbc -plugin-sql-mysql -nomake demo -nomake examples



  • I am building from source on Windows with VS2012.

    I update the sources from git using the command:

    qtrepotools\bin\qt5_tool -p --Branch stable

    The problem occurs because the headers in qtbase\include don't get updated when I 'nmake' and those include files are in the include path for each of the subdirectories.

    Any idea what I need to do to get the sources to build after updating?

    If I make clean, run configure again, and nmake everything works. But it would be better if I didn't have to take those steps every time.


  • Moderators

    [quote author="cmeyer" date="1375727141"]If I make clean, run configure again, and nmake everything works.[/quote]Hi,

    That IS the expected procedure. configure performs some bootstrapping and builds a small subset of qtbase.git, which is then used to build the rest of Qt. After you update the code, you have to re-bootstrap (i.e. rerun configure)

    You can simplify things by writing a Batch file to run configure with the options you want.



  • [quote author="JKSH" date="1375750792"][quote author="cmeyer" date="1375727141"]If I make clean, run configure again, and nmake everything works.[/quote]Hi,

    That IS the expected procedure. configure performs some bootstrapping and builds a small subset of qtbase.git, which is then used to build the rest of Qt. After you update the code, you have to re-bootstrap (i.e. rerun configure)[/quote]

    Actually I tried the reconfigure and it still fails. What does work is doing the "really clean" clean, then configure and rebuild:

    git submodule foreach --recursive "git clean -dfx"

    Maybe the mistake I made this time was not cleaning before updating from the repository. Ugh. And now I'm stuck in some strange state that requires a "really clean" clean and rebuild.



  • sudo apt-add-repository ppa:u-szeged/sedkit && sudo apt-get update && sudo apt-get install sedkit-env-qtwebkit in ubuntu gives me the following errors:

    W: Failed to fetch http://ppa.launchpad.net/u-szeged/sedkit/ubuntu/dists/raring/main/binary-amd64/Packages 404 Not Found

    W: Failed to fetch http://ppa.launchpad.net/u-szeged/sedkit/ubuntu/dists/raring/main/binary-i386/Packages 404 Not Found

    E: Some index files failed to download. They have been ignored, or old ones used instead.

    Am i making some newbie linux mistake or is this method currently broken?

    Thanks,

    Rich



  • [[blank-post-content-placeholder]]



  • I had to give root permission to run this script & fix this issue.
    But why it is required to give root permission to run script that is present inside my working directory


  • Moderators

    [quote author="rockdemon" date="1376560830"]W: Failed to fetch http://ppa.launchpad.net/u-szeged/sedkit/ubuntu/dists/raring/main/binary-amd64/Packages 404 Not Found[/quote]It looks like U-Szeged Team has become inactive. They only created packages up till Ubuntu 12.10 (Quantal Quetzal): http://ppa.launchpad.net/u-szeged/sedkit/ubuntu/dists/ Unfortunately that means you can't use this method for Ubuntu 13.04 (Raring Ringtail)

    [quote author="bitu" date="1376896656"]I had to give root permission to run this script & fix this issue.
    But why it is required to give root permission to run script that is present inside my working directory[/quote]What script, for what issue?

    Did you remember to give it execution permissions? (chmod +x, or right-click -> Properties -> Permissions -> Execute) No script is allowed to run unless they have been given permission.



  • thanks for the info :)

    I got it working the manual way so all good in the end :)

    Cheers,

    Rich

    [quote author="JKSH" date="1377003458"][quote author="rockdemon" date="1376560830"]W: Failed to fetch http://ppa.launchpad.net/u-szeged/sedkit/ubuntu/dists/raring/main/binary-amd64/Packages 404 Not Found[/quote]It looks like U-Szeged Team has become inactive. They only created packages up till Ubuntu 12.10 (Quantal Quetzal): http://ppa.launchpad.net/u-szeged/sedkit/ubuntu/dists/ Unfortunately that means you can't use this method for Ubuntu 13.04 (Raring Ringtail)

    [quote author="bitu" date="1376896656"]I had to give root permission to run this script & fix this issue.
    But why it is required to give root permission to run script that is present inside my working directory[/quote]What script, for what issue?

    Did you remember to give it execution permissions? (chmod +x, or right-click -> Properties -> Permissions -> Execute) No script is allowed to run unless they have been given permission.[/quote]



  • How to properly build qt for both 32bit and 64bit (using Ubuntu 64)?



  • In the Issues section at the end, one helpful hint may be to describe the error where configure fails on MacOS when certain brew or port packages have been installed with a message that says that no XCB lib found, like this:

    Running configuration tests...
    The test for linking against libxcb and support libraries failed!
    You might need to install dependency packages, or pass -qt-xcb.
    See src/plugins/platforms/xcb/README.

    The easy workaround is to pass -no-pkg-config to configure.

    See also this patch which has not yet been accepted:

    https://codereview.qt-project.org/#change,67213,patchset=1



  • In the System Requirements -> Windows -> Windows Graphics Drivers section where it says that the DirectX SDK must be installed, perhaps this link

    http://www.microsoft.com/en-us/download/details.aspx?id=6812

    would be a more useful one than what's there:

    http://msdn.microsoft.com/en-us/directx/default.aspx

    That is, we don't want to read about DirectX, we just want to download and install the SDK and get on with using Qt! ;-)



  • I certainly don't see this stated in the wiki page, but it seems to me that flex is required whenever using Angle… This was in a build of qtbase only, so I'm pretty sure it wasn't a webkit option that caused this build failure:

    win_flex --noline --nounistd --outfile=Tokenizer.cpp ........\3rdparty\angle\src\compiler\preprocessor\Tokenizer.l
    'win_flex' is not recognized as an internal or external command,



  • I'm trying to build Qt 5 from git with Visual Studio 2008.
    My os is Windows Vista SP2

    The configuration seems to be ok, but I have a strange problem in the building (nmake): the first time that rcc is used (with mimetypes.qrc), it crashes, so the building can't continue.
    I've tried to run rcc manually. If there is some error in the qrc file (eg some file missing) it correcly outputs the error. Instead if it's all right, it crashes.

    I also tried to compile the source taken from the zip in the downolad page, but I have the same result.

    I don't know what I have to do to better understand the problem.



  • Adding some debug lines in the rcc.cpp code I've found that the problem is the function "qCompress()".
    So I added the -qt-zlib option to the configure tool, and now seems to work!

    So my question now is why the system zlib cause this problem? I have installed the 7.0 version of the Windows SDK, maybe the 7.1 is needed.
    The guide indicates a generic Windows SDK 7 version for Visual Studio 2008...

    Now I'm going to build all and I hope that it works!


  • Moderators

    What compiler was your system Zlib compiled with?



  • [quote author="JKSH" date="1389219853"]What compiler was your system Zlib compiled with?[/quote]

    I don't know... And I don't know how to know :)


  • Moderators

    [quote author="puffosauro" date="1389252183"][quote author="JKSH" date="1389219853"]What compiler was your system Zlib compiled with?[/quote]

    I don't know... And I don't know how to know :)[/quote]Windows doesn't come with zlib, so if you didn't build zlib yourself, it doesn't exist on your system (unless something else installed it).

    I'm guessing something else installed zlib on your system, and that version is incompatible with MSVC 2008. (Another possibility is, there's no zlib on your system but configuration utility thought you did)



  • Hello. I built qt5 on my Gentoo machine and tried to run one of its tools (designer, for instance) but it failed. No GUI is shown but process runs. Later, I connected to machine through ssh with X forwarding, executed designer and it ran well, GUI was shown. Thanks



  • There is a nice shortcut for installing build dependencies for qt5 on ubuntu/debian based systems.

    sudo apt-get build-dep qt5-default

    I'm not exactly sure where to put this tip in the wiki page though.


  • Moderators

    [quote author="ezust" date="1412525485"]There is a nice shortcut for installing build dependencies for qt5 on ubuntu/debian based systems.

    sudo apt-get build-dep qt5-default

    I'm not exactly sure where to put this tip in the wiki page though.
    [/quote]Here's a good place: http://qt-project.org/wiki/Building_Qt_5_from_Git (It's a rather massive page though, so read through the whole thing first to find the best place to put yours)



  • Hi!

    I got http://download.qt-project.org/development_releases/qt/5.4/5.4.0-beta/single/qt-everywhere-opensource-src-5.4.0-beta.tar.xz

    When I compile I got errors:

    .obj/qsqldatabase.o:qsqldatabase.cpp:function QSqlDatabasePrivate::database(QString const&, bool): error: undefined reference to ‘QDebug::~QDebug()’

    .obj/qsqlfield.o:qsqlfield.cpp:function operator<<(QDebug, QSqlField const&): error: undefined reference to ‘QDebug::~QDebug()’

    .obj/qtestlog.o:qtestlog.cpp:function QTest::messageHandler(QtMsgType, QMessageLogContext const&, QString const&): error: undefined reference to ‘qFormatLogMessage(QtMsgType, QMessageLogContext const&, QString const&)’

    .obj/qnetworkaccessbackend.o:qnetworkaccessbackend.cpp:function QNetworkAccessBackend::createUploadByteDevice(): error: undefined reference to ‘QNonContiguousByteDeviceFactory::createShared(QSharedPointer<QRingBuffer>)’

    what can help here?

    I build qt for MX6 SOC.

    My config is

    @unset QTDIR
    export PATH="$PWD/qtbase/bin:$PWD/qtrepotools/bin:$PATH"
    export LIBS="$PWD:$LIBS"

    ./configure -opensource -confirm-license
    -device imx6
    -device-option CROSS_COMPILE=/usr/local/linaro-toolchain/bin/arm-linux-gnueabihf-
    -no-pch
    -no-opengl
    -no-xcb
    -opengl es2
    -make libs
    -nomake examples
    -nomake tests
    -sysroot /home/work/fs -no-gcc-sysroot
    -prefix /opt/qt5
    -v@



  • Hello.

    I am trying to build Qt 5.4.1 on CentOS 5.10. Unfortunately I got stuck on step:

    yum install libxcb libxcb-devel xcb-util xcb-util-devel

    Error:

    sudo yum install libxcb libxcb-devel xcb-util xcb-util-devel
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile



  • This post is deleted!


  • @werispaul did you found a solution to this compiling error: "QtGui/QPlatformDialogHelper": No such file or directory?
    I have similar problem with missing headers, when compiling Qt from git.



  • This post is deleted!

Log in to reply