ExternalProject: Ensure keywords requiring an argument have one

Issue: #21089
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 86d83f5..bef918d 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -2157,6 +2157,12 @@
     byproducts
   )
 
+  if(NOT "x${work_dir}" STREQUAL "x")
+    set(maybe_WORKING_DIRECTORY "WORKING_DIRECTORY [==[${work_dir}]==]")
+  else()
+    set(maybe_WORKING_DIRECTORY "")
+  endif()
+
   # Custom comment?
   get_property(comment_set
     TARGET ${name}
@@ -2176,9 +2182,9 @@
     PROPERTY _EP_${step}_USES_TERMINAL
   )
   if(uses_terminal)
-    set(uses_terminal USES_TERMINAL)
+    set(maybe_USES_TERMINAL USES_TERMINAL)
   else()
-    set(uses_terminal "")
+    set(maybe_USES_TERMINAL "")
   endif()
 
   # Run every time?
@@ -2245,14 +2251,14 @@
     add_custom_command(
       OUTPUT \${stamp_file}
       BYPRODUCTS \${byproducts}
-      COMMENT \${comment}
+      COMMENT [===[${comment}]===]
       COMMAND ${__cmdQuoted}
+      DEPENDS \${depends}
+      VERBATIM
       ${maybe_COMMAND_touch}
       ${maybe_JOB_SERVER_AWARE}
-      DEPENDS \${depends}
-      WORKING_DIRECTORY \${work_dir}
-      VERBATIM
-      ${uses_terminal}
+      ${maybe_WORKING_DIRECTORY}
+      ${maybe_USES_TERMINAL}
     )"
   )
   set_property(TARGET ${name} APPEND PROPERTY _EP_STEPS ${step})