Details
-
Bug
-
Resolution: Out of scope
-
Not Evaluated
-
None
-
Qt Creator 7.0.2
-
None
-
-
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:
- git clone https://code.qt.io/cgit/qt/qtapplicationmanager.git/
- git checkout origin/5.15
- Open application-manager.pro in QtCreator
- Assign it any 5.15 kit (we tested with 5.15.4, .8, .9 and .10)
- Build it
- 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)