Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-27882

Cannot build QtApplicationManager within QtCreator

    XMLWordPrintable

Details

    • Bug
    • Resolution: Out of scope
    • Not Evaluated
    • None
    • Qt Creator 7.0.2
    • None
    • Linux/X11, Windows
    • 96dcc58344 (qt/qtapplicationmanager/5.15) 96dcc58344 (qt/tqtc-qtapplicationmanager/5.15)

    Description

      QtCreator 7.0.2 (from the Installer on Windows and  from the Debian/sid package on Linux)
      Using jom or nmake on Windows doesn't make a difference.

      I'm not sure when this started to be an issue, because I suspected my Linux installation doing wonky things for a long time, but now more and more people are experiencing this problem. I have no clue what is really going on, so I cannot give you smaller example.

      At least it's easily reproducible 100% of the time ... tested it both on Windows and Linux on 3 machines and multiple Qt versions/installations.

      Steps:

      1. git clone https://code.qt.io/cgit/qt/qtapplicationmanager.git/
      2. git checkout origin/5.15
      3. Open application-manager.pro in QtCreator
      4. Assign it any 5.15 kit (we tested with 5.15.4, .8, .9 and .10)
      5. Build it
      6. If you want to re-build while testing, I always remove the build-directory (if you have a developer-build Qt, make sure to also cd <qt-build-dir>/qtbase/include && rm -rf QtAppMan*). We want to make sure that syncqt recreates the forward headers.

      You should get one of two errors. They are essentially the same (server or client side of a Wayland extension) ... it's just a timing issue which one triggers first if you do a parallel build.

      *** No rule to make target '<qt build dir>/qtbase/include/QtAppManWindow/5.15.1/QtAppManWindow/private/qwayland-server-qtam-extension.h', needed by '.obj/waylandcompositor.o'.
      
      OR
      
      make[2]: *** No rule to make target '<qt build dir>/qtbase/include/QtAppManLauncher/5.15.1/QtAppManLauncher/private/qwayland-qtam-extension.h', needed by '.obj/launchermain.o'. Stop. 

      Both these forward headers are (well should be) injected via syncqt: see the AppMan's sync.profile for the details.

       

      Here's what I found out so far on why they are missing:

      1) If you build in a shell outside of Creator, using the same qmake and nmake commands it works perfectly fine

      2) If you disable the qmake step in QtCreator and replace it with two "Custom Process Steps" (one for qmake ... and one for make qmake_all) it also works perfectly fine.

      3) And now it gets interesting: Keep the standard qmake build step, do a clean build and run the following command in a shell in parallel:

      cd <qt build dir>/qtbase/include # Qt developer build OR
      cd <appman build dir>/include # Qt prefix build / from Installer
      
      while true; do echo -n "`date` " ; ls -la QtAppManWindow/5.15.1/QtAppManWindow/private/qwayland-server-qtam-extension.h; sleep 0.1s; done 

      and you get something like this: (see attached self-destructing-header.txt)
      The header IS created, but after ~5 seconds it's gone again (the qmake_all run hasn't even finished at that point in Creator)

       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            kandeler Christian Kandeler
            rgriebl Robert Griebl
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes