The path structure for reproducing is important, thus my steps to reproduce will mention my structure.
Steps to reproduce:
1)make dir and cd /Volumes/T3/Dev/qt/qt5_cmake/examples/bla
2) call qmake on an example /Volumes/T3/Dev/qt/qt5_cmake/qtbase/examples/corelib/threads/mandelbrot/mandelbrot.pro
3) Observe the following message and path:
The .qmake.stash file is created a couple of levels higher in the file system, instead of the build dir of the example.
The culprit code is in
bool QMakeEvaluator::prepareProject(const QString &inDir)
the forever loop assumes that both the source and build dir would be at the same file system level, so when searching for a ".qmake.conf" file, sdir goes one level up in lock step with dir (build dir).
In my particular case, the .qmake.conf is found a few levels higher in /Volumes/T3/Dev/qt/qt5_cmake/qtbase/ while navigating up from mandelbrot.pro.
The same amount of ".."s are added to the build dir, resulting in going from /Volumes/T3/Dev/qt/qt5_cmake/examples/bla
I think the proper solution is to extract the forever loop into two loops, so that there is no assumption that the .qmake.conf file and the .qmake.cache file are at the same level.
|For Gerrit Dashboard: QTBUG-76140|
|263519,6||Fix determination of source and build roots||5.12||qt/qtbase||Status: MERGED||+2||0|
|285616,1||Don't break out of the build dir for non-super builds||5.15||qt/qtbase||Status: DEFERRED||-1||0|