Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-37113

REG: Android: Compile failure on Windows due to exceedingly long paths

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P1: Critical
    • Resolution: Done
    • Affects Version/s: 5.2.1
    • Fix Version/s: 5.3.0 RC1
    • Component/s: Build tools: qmake
    • Labels:
      None
    • Platform/s:
      Android
    • Commits:
      c99f909bedad3f590c92deeeefa02e4e74029c1c

      Description

      Something changed which has caused qmake to produce relative paths in the Makefile for the dependencies in the Android NDK.

      When combined with Qt Creator's long shadow build directory names on Windows, this will almost always cause us to hit the system path length limitation, which will cause errors like this:

          10:20:26: Running steps for project qmlsensorgestures...
          10:20:26: Starting: "D:\dev\Qt5.2.1Android\Tools\mingw48_32\bin\mingw32-make.exe" clean
          del moc_qcountergestureplugin.cpp moc_qcounterrecognizer.cpp
          Could Not Find D:\dev\Qt5.2.1Android\5.2.1\android_armv7\examples\sensors\build-qmlsensorgestures-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_1_Android_GCC_arm_4_8-Debug\plugin\moc_qcountergestureplugin.cpp
          del qcountergestureplugin.obj qcounterrecognizer.obj moc_qcountergestureplugin.obj moc_qcounterrecognizer.obj
          Could Not Find D:\dev\Qt5.2.1Android\5.2.1\android_armv7\examples\sensors\build-qmlsensorgestures-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_1_Android_GCC_arm_4_8-Debug\plugin\qcountergestureplugin.obj
          del *~ core *.core
          Could Not Find D:\dev\Qt5.2.1Android\5.2.1\android_armv7\examples\sensors\build-qmlsensorgestures-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_1_Android_GCC_arm_4_8-Debug\plugin\*~
          10:20:26: The process "D:\dev\Qt5.2.1Android\Tools\mingw48_32\bin\mingw32-make.exe" exited normally.
          10:20:26: Configuration unchanged, skipping qmake step.
          10:20:26: Starting: "D:\dev\Qt5.2.1Android\Tools\mingw48_32\bin\mingw32-make.exe"
          mingw32-make: *** No rule to make target '..\..\..\..\..\..\..\android-ndk-r9c\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include\bits\c++config.h', needed by 'qcountergestureplugin.obj'.  Stop.
          10:20:27: The process "D:\dev\Qt5.2.1Android\Tools\mingw48_32\bin\mingw32-make.exe" exited with code 2.
          Error while building/deploying project qmlsensorgestures (kit: Android for armeabi-v7a (GCC 4.8, Qt 5.2.1)-Android GCC (arm-4.8))
          When executing step 'Make'
          10:20:27: Elapsed time: 00:01.
      

      The problem here is that while the file exists, the path

      $$REALLY_LONG_INSTALL_PATH\..\..\..\..\..\..\..\android-ndk-r9c\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include\bits\c++config.h
      

      becomes too long for the system, so the file can't be opened by mingw32-make.

      I think we should return to using absolute paths for the dependencies.

        Attachments

          Issue Links

          For Gerrit Dashboard: QTBUG-37113
          # Subject Branch Project Status CR V

            Activity

              People

              • Assignee:
                buddenha Oswald Buddenhagen
                Reporter:
                esabraha Eskil Abrahamsen Blomfeldt
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes