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

qt_add_qml_module() causes non-Ninja generators to think that projects are never up-to-date

    XMLWordPrintable

Details

    • 0338a2f75 (dev), f81945e1d (dev), 6fbd6e1f7 (6.6), 33b5e9f39 (tqtc/lts-6.5), b407e3717 (6.6), ee05413e7 (tqtc/lts-6.5), 7c6ef1544 (tqtc/lts-6.5), ad6753ba7 (dev), dc327e192 (6.6), 66aebd35a (dev), aef0c3cf3 (6.7), 96289e100 (6.6), d4ca70eaa (dev)

    Description

      While the patches for QTBUG-106683 have successfully stopped the actual rebuilding of *.cpp files and libraries/executables, there are still many things that make the non-Ninja generators think that the project is stale. This causes build times to blow up when a large project has may small QML modules.

      See the attached sample project, which is a very basic "Hello World" app plus a single QML_ELEMENT class.

       

      Visual Studio 17 2022 generator
      Load the generated *.sln file in Visual Studio, go to "Tools" > "Options" > "Projects and Solutions" > "Build And Run", and set "MSBuild project build output verbosity" to "Detailed" or "Diagnostic". When rebuilding without changes, the build output contains:

      3>------ Up-To-Date check: Project: appRebuildTest_qmltyperegistration.vcxproj, Configuration: Debug x64 ------
      3>Project is not up-to-date: build output 'd:\qtsupport\00481833\build-rebuildtest-desktop_qt_6_6_0_msvc2019_64bit\cmakefiles\apprebuildtest_qmltyperegistration' is missing
      
      4>------ Up-To-Date check: Project: appRebuildTest_qmlimportscan.vcxproj, Configuration: Debug x64 ------
      4>Project is not up-to-date: build output 'd:\qtsupport\00481833\build-rebuildtest-desktop_qt_6_6_0_msvc2019_64bit\cmakefiles\apprebuildtest_qmlimportscan' is missing
      
      5>------ Up-To-Date check: Project: appRebuildTest_autogen.vcxproj, Configuration: Debug x64 ------
      5>Project is not up-to-date: build output 'd:\qtsupport\00481833\build-rebuildtest-desktop_qt_6_6_0_msvc2019_64bit\cmakefiles\apprebuildtest_autogen' is missing
      
      7>------ Up-To-Date check: Project: appRebuildTest_qmllint_module.vcxproj, Configuration: Debug x64 ------
      7>Project is not up-to-date: build output 'd:\qtsupport\00481833\build-rebuildtest-desktop_qt_6_6_0_msvc2019_64bit\cmakefiles\apprebuildtest_qmllint_module' is missing
      
      8>------ Up-To-Date check: Project: appRebuildTest_qmllint_json.vcxproj, Configuration: Debug x64 ------
      8>Project is not up-to-date: build output 'd:\qtsupport\00481833\build-rebuildtest-desktop_qt_6_6_0_msvc2019_64bit\cmakefiles\apprebuildtest_qmllint_json' is missing
      
      9>------ Up-To-Date check: Project: appRebuildTest_qmllint.vcxproj, Configuration: Debug x64 ------
      9>Project is not up-to-date: build output 'd:\qtsupport\00481833\build-rebuildtest-desktop_qt_6_6_0_msvc2019_64bit\cmakefiles\apprebuildtest_qmllint' is missing
      
      10>------ Up-To-Date check: Project: appRebuildTest_automoc_json_extraction.vcxproj, Configuration: Debug x64 ------
      10>Project is not up-to-date: build output 'd:\qtsupport\00481833\build-rebuildtest-desktop_qt_6_6_0_msvc2019_64bit\cmakefiles\apprebuildtest_automoc_json_extraction' is missing
      
      14>------ Up-To-Date check: Project: appRebuildTest.vcxproj, Configuration: Debug x64 ------
      14>Project is not up-to-date: build input 'd:\qtsupport\00481833\build-rebuildtest-desktop_qt_6_6_0_msvc2019_64bit\meta_types\apprebuildtest_json_file_list.txt' was modified after the last build finished.
      

       

      MinGW Makefiles generator (GNU Make 4.2.1, Built for x86_64-w64-mingw32)
      Use the --debug=basic flag. When rebuilding without changes, the build output contains:

       File 'all' does not exist.
         File 'cmake_check_build_system' does not exist.
        Must remake target 'cmake_check_build_system'.
      
      Must remake target 'all'.
      
       File 'all' does not exist.
         File 'CMakeFiles/appRebuildTest.dir/all' does not exist.
           File 'CMakeFiles/appRebuildTest_tooling.dir/all' does not exist.
          Must remake target 'CMakeFiles/appRebuildTest_tooling.dir/all'.
      
       File 'CMakeFiles/appRebuildTest_tooling.dir/depend' does not exist.
      Must remake target 'CMakeFiles/appRebuildTest_tooling.dir/depend'.
      
       File 'CMakeFiles/appRebuildTest_tooling.dir/build' does not exist.
         File 'appRebuildTest_tooling' does not exist.
        Must remake target 'appRebuildTest_tooling'.
      
      Must remake target 'CMakeFiles/appRebuildTest_tooling.dir/build'.
      
      [  5%] Built target appRebuildTest_tooling
           File 'CMakeFiles/appRebuildTest_automoc_json_extraction.dir/all' does not exist.
             File 'CMakeFiles/appRebuildTest_autogen.dir/all' does not exist.
               File 'CMakeFiles/appRebuildTest_qmlimportscan.dir/all' does not exist.
              Must remake target 'CMakeFiles/appRebuildTest_qmlimportscan.dir/all'.
      
       File 'CMakeFiles/appRebuildTest_qmlimportscan.dir/depend' does not exist.
      Must remake target 'CMakeFiles/appRebuildTest_qmlimportscan.dir/depend'.
      
       File 'CMakeFiles/appRebuildTest_qmlimportscan.dir/build' does not exist.
         File 'appRebuildTest_qmlimportscan' does not exist.
           File 'CMakeFiles/appRebuildTest_qmlimportscan' does not exist.
          Must remake target 'CMakeFiles/appRebuildTest_qmlimportscan'.
      
        Must remake target 'appRebuildTest_qmlimportscan'.
      
      Must remake target 'CMakeFiles/appRebuildTest_qmlimportscan.dir/build'.
      
      [ 10%] Built target appRebuildTest_qmlimportscan
      
            Must remake target 'CMakeFiles/appRebuildTest_autogen.dir/all'.
      
       File 'CMakeFiles/appRebuildTest_autogen.dir/depend' does not exist.
      Must remake target 'CMakeFiles/appRebuildTest_autogen.dir/depend'.
      
       File 'CMakeFiles/appRebuildTest_autogen.dir/build' does not exist.
         File 'appRebuildTest_autogen' does not exist.
           File 'CMakeFiles/appRebuildTest_autogen' does not exist.
          Must remake target 'CMakeFiles/appRebuildTest_autogen'.
      [ 15%] Automatic MOC and UIC for target appRebuildTest
      
        Must remake target 'appRebuildTest_autogen'.
      
      Must remake target 'CMakeFiles/appRebuildTest_autogen.dir/build'.
      
      [ 21%] Built target appRebuildTest_autogen
      
          Must remake target 'CMakeFiles/appRebuildTest_automoc_json_extraction.dir/all'.
      
       File 'CMakeFiles/appRebuildTest_automoc_json_extraction.dir/depend' does not exist.
      Must remake target 'CMakeFiles/appRebuildTest_automoc_json_extraction.dir/depend'.
      
       File 'CMakeFiles/appRebuildTest_automoc_json_extraction.dir/build' does not exist.
         File 'appRebuildTest_automoc_json_extraction' does not exist.
           File 'CMakeFiles/appRebuildTest_automoc_json_extraction' does not exist.
          Must remake target 'CMakeFiles/appRebuildTest_automoc_json_extraction'.
      [ 26%] Running AUTOMOC file extraction for target appRebuildTest
      
        Must remake target 'appRebuildTest_automoc_json_extraction'.
      
      Must remake target 'CMakeFiles/appRebuildTest_automoc_json_extraction.dir/build'.
      
      [ 26%] Built target appRebuildTest_automoc_json_extraction
      
        Must remake target 'CMakeFiles/appRebuildTest.dir/all'.
      
       File 'CMakeFiles/appRebuildTest.dir/depend' does not exist.
         Prerequisite 'meta_types/appRebuildTest_json_file_list.txt' is newer than target 'meta_types/qt6apprebuildtest_debug_metatypes.json.gen'.
        Must remake target 'meta_types/qt6apprebuildtest_debug_metatypes.json.gen'.
      [ 31%] Running moc --collect-json for target appRebuildTest
      
      Must remake target 'CMakeFiles/appRebuildTest.dir/depend'.
      
       File 'CMakeFiles/appRebuildTest.dir/build' does not exist.
      Must remake target 'CMakeFiles/appRebuildTest.dir/build'.
      
      [100%] Built target appRebuildTest
      
      Must remake target 'all'.
      

      Attachments

        Issue Links

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

          Activity

            People

              jbornema Joerg Bornemann
              skoh-qt Sze Howe Koh
              Votes:
              3 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes