diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 14f66d9e70755d5772e573147bdd5bd0136c3eba..73f5ad5b87b746b0065da8135547c98cd31c06ef 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -1687,6 +1687,9 @@ void cmake::PrintPresetList(const cmCMakePresetsFile& file) const
   this->GetRegisteredGenerators(generators, false);
   auto filter =
     [&generators](const cmCMakePresetsFile::ConfigurePreset& preset) -> bool {
+    if (preset.Generator.empty()) {
+      return true;
+    }
     auto condition = [&preset](const GeneratorInfo& info) -> bool {
       return info.name == preset.Generator;
     };
diff --git a/Tests/RunCMake/CMakePresets/ListPresets-stdout.txt b/Tests/RunCMake/CMakePresets/ListPresets-stdout.txt
index 60d6adbd98a932b379c9597e2f1beb6b1ce61656..97eedae7c6b61f4b6b6f823901df7efa95955e0c 100644
--- a/Tests/RunCMake/CMakePresets/ListPresets-stdout.txt
+++ b/Tests/RunCMake/CMakePresets/ListPresets-stdout.txt
@@ -1,6 +1,7 @@
 ^Not searching for unused variables given on the command line\.
 Available configure presets:
 
-  "zzzzzz"   - Sleepy
-  "aaaaaaaa" - Screaming
-  "mmmmmm"$
+  "zzzzzz"       - Sleepy
+  "aaaaaaaa"     - Screaming
+  "mmmmmm"
+  "no-generator"$
diff --git a/Tests/RunCMake/CMakePresets/ListPresets.json.in b/Tests/RunCMake/CMakePresets/ListPresets.json.in
index 2ef3797daf20e3e84eae0add39f8a5d6294b4cf7..160098c537f656b00d989338cdb712d9d4d4dcba 100644
--- a/Tests/RunCMake/CMakePresets/ListPresets.json.in
+++ b/Tests/RunCMake/CMakePresets/ListPresets.json.in
@@ -1,5 +1,5 @@
 {
-  "version": 1,
+  "version": 3,
   "configurePresets": [
     {
       "name": "zzzzzz",
@@ -18,6 +18,9 @@
       "generator": "@RunCMake_GENERATOR@",
       "binaryDir": "${sourceDir}/build/mmmmmm"
     },
+    {
+      "name": "no-generator"
+    },
     {
       "name": "invalid-generator",
       "generator": "Invalid Generator",
diff --git a/Tests/RunCMake/CMakePresets/ListPresetsHidden-stdout.txt b/Tests/RunCMake/CMakePresets/ListPresetsHidden-stdout.txt
index 60d6adbd98a932b379c9597e2f1beb6b1ce61656..97eedae7c6b61f4b6b6f823901df7efa95955e0c 100644
--- a/Tests/RunCMake/CMakePresets/ListPresetsHidden-stdout.txt
+++ b/Tests/RunCMake/CMakePresets/ListPresetsHidden-stdout.txt
@@ -1,6 +1,7 @@
 ^Not searching for unused variables given on the command line\.
 Available configure presets:
 
-  "zzzzzz"   - Sleepy
-  "aaaaaaaa" - Screaming
-  "mmmmmm"$
+  "zzzzzz"       - Sleepy
+  "aaaaaaaa"     - Screaming
+  "mmmmmm"
+  "no-generator"$
diff --git a/Tests/RunCMake/CMakePresets/ListPresetsNoSuchPreset-stdout.txt b/Tests/RunCMake/CMakePresets/ListPresetsNoSuchPreset-stdout.txt
index 60d6adbd98a932b379c9597e2f1beb6b1ce61656..97eedae7c6b61f4b6b6f823901df7efa95955e0c 100644
--- a/Tests/RunCMake/CMakePresets/ListPresetsNoSuchPreset-stdout.txt
+++ b/Tests/RunCMake/CMakePresets/ListPresetsNoSuchPreset-stdout.txt
@@ -1,6 +1,7 @@
 ^Not searching for unused variables given on the command line\.
 Available configure presets:
 
-  "zzzzzz"   - Sleepy
-  "aaaaaaaa" - Screaming
-  "mmmmmm"$
+  "zzzzzz"       - Sleepy
+  "aaaaaaaa"     - Screaming
+  "mmmmmm"
+  "no-generator"$
diff --git a/Tests/RunCMake/CMakePresets/ListPresetsWorkingDir-stdout.txt b/Tests/RunCMake/CMakePresets/ListPresetsWorkingDir-stdout.txt
index 60d6adbd98a932b379c9597e2f1beb6b1ce61656..97eedae7c6b61f4b6b6f823901df7efa95955e0c 100644
--- a/Tests/RunCMake/CMakePresets/ListPresetsWorkingDir-stdout.txt
+++ b/Tests/RunCMake/CMakePresets/ListPresetsWorkingDir-stdout.txt
@@ -1,6 +1,7 @@
 ^Not searching for unused variables given on the command line\.
 Available configure presets:
 
-  "zzzzzz"   - Sleepy
-  "aaaaaaaa" - Screaming
-  "mmmmmm"$
+  "zzzzzz"       - Sleepy
+  "aaaaaaaa"     - Screaming
+  "mmmmmm"
+  "no-generator"$