From 85627a93c92afb628e2eb22f380966b9a0f45a8f Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Mon, 6 Nov 2023 18:34:58 -0500
Subject: cmCTestBuildCommand: Avoid requiring complete cmGlobalGenerator type
 publicly

---
 Source/CTest/cmCTestBuildCommand.cxx | 10 ++++++++++
 Source/CTest/cmCTestBuildCommand.h   | 11 ++---------
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/Source/CTest/cmCTestBuildCommand.cxx b/Source/CTest/cmCTestBuildCommand.cxx
index 50d69df..d8ef195 100644
--- a/Source/CTest/cmCTestBuildCommand.cxx
+++ b/Source/CTest/cmCTestBuildCommand.cxx
@@ -3,11 +3,13 @@
 #include "cmCTestBuildCommand.h"
 
 #include <sstream>
+#include <utility>
 
 #include <cmext/string_view>
 
 #include "cmCTest.h"
 #include "cmCTestBuildHandler.h"
+#include "cmCommand.h"
 #include "cmGlobalGenerator.h"
 #include "cmMakefile.h"
 #include "cmMessageType.h"
@@ -18,6 +20,14 @@
 
 class cmExecutionStatus;
 
+std::unique_ptr<cmCommand> cmCTestBuildCommand::Clone()
+{
+  auto ni = cm::make_unique<cmCTestBuildCommand>();
+  ni->CTest = this->CTest;
+  ni->CTestScriptHandler = this->CTestScriptHandler;
+  return std::unique_ptr<cmCommand>(std::move(ni));
+}
+
 void cmCTestBuildCommand::BindArguments()
 {
   this->cmCTestHandlerCommand::BindArguments();
diff --git a/Source/CTest/cmCTestBuildCommand.h b/Source/CTest/cmCTestBuildCommand.h
index 1254dad..3b7f4f9 100644
--- a/Source/CTest/cmCTestBuildCommand.h
+++ b/Source/CTest/cmCTestBuildCommand.h
@@ -5,14 +5,13 @@
 #include "cmConfigure.h" // IWYU pragma: keep
 
 #include <string>
-#include <utility>
 #include <vector>
 
 #include <cm/memory>
 
 #include "cmCTestHandlerCommand.h"
-#include "cmCommand.h"
 
+class cmCommand;
 class cmCTestBuildHandler;
 class cmCTestGenericHandler;
 class cmExecutionStatus;
@@ -31,13 +30,7 @@ public:
   /**
    * This is a virtual constructor for the command.
    */
-  std::unique_ptr<cmCommand> Clone() override
-  {
-    auto ni = cm::make_unique<cmCTestBuildCommand>();
-    ni->CTest = this->CTest;
-    ni->CTestScriptHandler = this->CTestScriptHandler;
-    return std::unique_ptr<cmCommand>(std::move(ni));
-  }
+  std::unique_ptr<cmCommand> Clone() override;
 
   /**
    * The name of the command as specified in CMakeList.txt.
-- 
cgit v0.12