diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx
index aaf18170b59561e3662933a7b79470225508cc87..854220620a6fd555864eace0dd1517ec442df5d5 100644
--- a/Source/cmQtAutoGenInitializer.cxx
+++ b/Source/cmQtAutoGenInitializer.cxx
@@ -883,6 +883,27 @@ bool cmQtAutoGenInitializer::InitRcc()
     }
   }
 
+  // Disable zstd if it is not supported
+  {
+    std::string const qtFeatureZSTD = "QT_FEATURE_zstd";
+    if (this->GenTarget->Target->GetMakefile()->IsDefinitionSet(
+          qtFeatureZSTD)) {
+      const auto zstdDef =
+        this->GenTarget->Target->GetMakefile()->GetSafeDefinition(
+          qtFeatureZSTD);
+      const auto zstdVal = cmValue(zstdDef);
+      if (zstdVal.IsOff()) {
+        auto const& kw = this->GlobalInitializer->kw();
+        auto rccOptions = this->GenTarget->GetSafeProperty(kw.AUTORCC_OPTIONS);
+        std::string const nozstd = "--no-zstd";
+        if (rccOptions.find(nozstd) == std::string::npos) {
+          rccOptions.append(";" + nozstd + ";");
+        }
+        this->GenTarget->Target->SetProperty(kw.AUTORCC_OPTIONS, rccOptions);
+      }
+    }
+  }
+
   return true;
 }
 
diff --git a/Tests/RunCMake/Autogen/RccExample.cmake b/Tests/RunCMake/Autogen/RccExample.cmake
index 4554eb046a811f2d8952f505273466e46b991692..ade0fef8b048d3b26c405fcb507325cd7912faf2 100644
--- a/Tests/RunCMake/Autogen/RccExample.cmake
+++ b/Tests/RunCMake/Autogen/RccExample.cmake
@@ -9,3 +9,7 @@ target_link_libraries(dummy Qt${with_qt_version}::Core
                             Qt${with_qt_version}::Gui)
 
 set_target_properties(dummy PROPERTIES AUTORCC ON)
+
+if(DEFINED ZSTD_VALUE)
+  set(QT_FEATURE_zstd ${ZSTD_VALUE})
+endif()
diff --git a/Tests/RunCMake/Autogen/RunCMakeTest.cmake b/Tests/RunCMake/Autogen/RunCMakeTest.cmake
index d0bbbb0a92c34a9a4b9cdbe2b97602f12431cdc6..0036551094f711fee8d8170e17d8c14b30d1705e 100644
--- a/Tests/RunCMake/Autogen/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Autogen/RunCMakeTest.cmake
@@ -463,4 +463,25 @@ ${make_program_stderr}
       endblock()
     endforeach()
   endif()
+
+  if (QtCore_VERSION VERSION_GREATER_EQUAL 6)
+    if (RunCMake_GENERATOR MATCHES "Make|Ninja")
+      foreach(value IN ITEMS ON OFF)
+        block()
+          set(RunCMake_TEST_BINARY_DIR
+            ${RunCMake_BINARY_DIR}/RccNoZTSD-${value}-build)
+          run_cmake_with_options(RccExample ${RunCMake_TEST_OPTIONS}
+            -DCMAKE_AUTOGEN_VERBOSE=ON -DZSTD_VALUE=${value})
+          if (value STREQUAL "OFF")
+            set(RunCMake_TEST_EXPECT_stdout "--no-zstd")
+          else()
+            set(RunCMake_TEST_NOT_EXPECT_stdout "--no-zstd")
+          endif()
+          set(RunCMake_TEST_NO_CLEAN 1)
+          run_cmake_command(RccNoZTSD-${value}-build ${CMAKE_COMMAND}
+            --build . --config Debug)
+        endblock()
+      endforeach()
+    endif()
+  endif()
 endif ()