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

[windows] re-populating cmake projects very slow on windows

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Not Evaluated
    • None
    • Qt Creator 17.0.0
    • None
    • Windows

    Description

      I'm building qt with a small number of repositories enabled (multimedia and dependencies).

      after a cmake run, the project is re-populated which is extremely slow:

      [cmake] Running C:\Program Files\CMake\bin\cmake.exe -S D:/qt6 -B D:/qt6/build/Clang_cl-Debug "-DQT_BUILD_TESTS:BOOL=ON" "-DQT_UNITY_BUILD:BOOL=ON" in D:\qt6\build\Clang_cl-Debug.
      ---->8----
      [cmake]  * QtBuildInternals
      [cmake]  * OpenGL
      [cmake]  * WrapPCRE2
      [cmake]  * WrapZLIB
      [cmake]  * WrapHarfbuzz
      [cmake]  * WrapPNG
      [cmake]  * WrapOpenGL
      [cmake]  * ODBC
      [cmake]  * WrapFreetype
      [cmake]  * WrapJpeg
      [cmake]  * Qt6DBusTools (required version >= 6.11.0)
      [cmake]  * Qt6DBusPrivate (required version == 6.11.0)
      [cmake]  * Qt6DBus
      [cmake]  * Qt6PrintSupportPrivate (required version == 6.11.0)
      [cmake]  * Qt6PrintSupport
      [cmake]  * Qt6XmlPrivate (required version == 6.11.0)
      [cmake]  * Qt6Xml (required version >= 6.11.0)
      [cmake]  * Qt6OpenGLWidgets (required version >= 6.11.0)
      [cmake]  * Qt6SqlPrivate (required version == 6.11.0)
      [cmake]  * Qt6Sql (required version >= 6.11.0)
      [cmake]  * Qt6TestInternalsPrivate (required version >= 6.11.0)
      [cmake]  * Qt6LanguageServerPrivate (required version >= 6.11.0)
      [cmake]  * Qt6LinguistTools (required version >= 6.11.0)
      [cmake]  * Qt6ExamplesAssetDownloaderPrivate (required version >= 6.11.0)
      [cmake]  * Python
      [cmake]  * Qt6PacketProtocolPrivate (required version >= 6.11.0)
      [cmake]  * Qt6QuickTestUtilsPrivate (required version >= 6.11.0)
      [cmake]  * Qt6QuickTimelinePrivate (required version == 6.10.0)
      [cmake]  * Qt6QuickTimeline (required version >= 6.11.0)
      [cmake]  * WrapOpenXR
      [cmake]  * Qt6SvgPrivate (required version == 6.11.0)
      [cmake]  * Qt6Svg (required version >= 6.11.0)
      [cmake]  * Qt6QuickTemplates2Private (required version == 6.11.0)
      [cmake]  * Qt6QuickControls2Private (required version == 6.11.0)
      [cmake]  * Qt6QuickControls2 (required version >= 6.11.0)
      [cmake]  * WMF
      [cmake]  * FFmpeg
      [cmake]  * Qt6Quick3DTools (required version >= 6.11.0)
      [cmake]  * Qt6Quick3DUtilsPrivate (required version == 6.11.0)
      [cmake]  * Qt6ShaderToolsTools (required version >= 6.11.0)
      [cmake]  * Qt6ShaderToolsPrivate (required version == 6.11.0)
      [cmake]  * Qt6ShaderTools (required version >= 6.11.0)
      [cmake]  * Qt6Concurrent (required version >= 6.11.0)
      [cmake]  * Qt6Quick3DRuntimeRenderPrivate (required version == 6.11.0)
      [cmake]  * Qt6Quick3DPrivate (required version == 6.11.0)
      [cmake]  * Qt6Quick3D (required version >= 6.11.0)
      [cmake]  * Threads
      [cmake]  * Qt6BuildInternals (required version >= 6.11.0)
      [cmake]  * WrapAtomic
      [cmake]  * Qt6CorePrivate (required version == 6.11.0)
      [cmake]  * Qt6Core (required version >= 6.11.0)
      [cmake]  * Qt6GuiPrivate (required version == 6.11.0)
      [cmake]  * Qt6Gui (required version >= 6.11.0)
      [cmake]  * Qt6NetworkPrivate (required version == 6.11.0)
      [cmake]  * Qt6Network (required version >= 6.11.0)
      [cmake]  * Qt6MultimediaPrivate (required version == 6.11.0)
      [cmake]  * Qt6Multimedia (required version >= 6.11.0)
      [cmake]  * Qt6CoreTools (required version >= 6.11.0)
      [cmake]  * Qt6GuiTools (required version >= 6.11.0)
      [cmake]  * Qt6WidgetsTools (required version >= 6.11.0)
      [cmake]  * Qt6WidgetsPrivate (required version == 6.11.0)
      [cmake]  * Qt6Widgets (required version >= 6.11.0)
      [cmake]  * Qt6TestPrivate (required version == 6.11.0)
      [cmake]  * Qt6Test (required version >= 6.11.0)
      [cmake]  * Qt6QmlPrivate (required version == 6.11.0)
      [cmake]  * Qt6QmlTools (required version >= 6.11.0)
      [cmake]  * Qt6QuickTools (required version >= 6.11.0)
      [cmake]  * Qt6QmlModelsPrivate (required version == 6.11.0)
      [cmake]  * Qt6QmlWorkerScriptPrivate (required version == 6.11.0)
      [cmake]  * Qt6QmlMetaPrivate (required version == 6.11.0)
      [cmake]  * Qt6OpenGLPrivate (required version == 6.11.0)
      [cmake]  * Qt6OpenGL (required version >= 6.11.0)
      [cmake]  * Qt6QuickPrivate (required version == 6.11.0)
      [cmake]  * Qt6QuickTestPrivate (required version == 6.11.0)
      [cmake]  * Qt6QuickTest (required version >= 6.11.0)
      [cmake]  * Qt6 (required version >= 6.11.0)
      [cmake] 
      [cmake] -- The following OPTIONAL packages have not been found:
      [cmake] 
      [cmake]  * Qt6QmlCompilerPlusPrivateTools (required version >= 6.11.0)
      [cmake]  * PkgConfig
      [cmake]  * SpeechDispatcher
      [cmake] 
      [cmake] 
      [cmake] -- Configuration summary has been written to D:/qt6/build/Clang_cl-Debug/config.summary
      [cmake] 
      [cmake] -- Configuring done (26.0s)
      [cmake] -- Generating done (19.1s)
      Generating compilation database for Clang-Tidy at "C:\Users\PC\AppData\Local\Temp\QtCreator-TwebwH\Clang-TidyorqeSw" ...
      Compilation database for Clang-Tidy successfully generated at "C:\Users\PC\AppData\Local\Temp\QtCreator-TwebwH\Clang-TidyorqeSw".
      Generating compilation database for Clazy at "C:\Users\PC\AppData\Local\Temp\QtCreator-TwebwH\ClazyEUdBal" ...
      Compilation database for Clazy successfully generated at "C:\Users\PC\AppData\Local\Temp\QtCreator-TwebwH\ClazyEUdBal".
      [cmake] -- Build files have been written to: D:/qt6/build/Clang_cl-Debug
      [cmake] 
      [cmake] Elapsed time: 07:54.
      

      almost 8 minutes on a rather beefy intel 14700k, 64gb, dev drive on an nvme ssd, QT_BUILD_TESTS in a top-level build will create quite a huge number of targets, if i only enable the unit tests for qtmultimedia, it's still 2 minutes

      doing some quick profiling with very sleepy, gives indicates that the filesystem watcher is the main culprit here:

      WaitForMultipleObjects	KERNELBASE	[unknown]	0	0x7ffc5470de11
      QFileSystemWatcher::tr	Qt6Core	[unknown]	0	0x7ffbc965820d
      QThread::start	Qt6Core	[unknown]	0	0x7ffbc95f69d2
      BaseThreadInitThunk	KERNEL32	[unknown]	0	0x7ffc55fde8d7
      RtlUserThreadStart	ntdll	[unknown]	0	0x7ffc56f7c34c
      

      makes me wonder if there is any way to improve the situation

      Attachments

        For Gerrit Dashboard: QTCREATORBUG-33173
        # Subject Branch Project Status CR V

        Activity

          People

            cadam Cristian Adam
            timblechmann tim blechmann
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There is 1 open Gerrit change