--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -115,14 +115,26 @@ install(FILES AUTHORS COPYING ChangeLog
 
 # Ensure the file gets CRLF line endings on Windows.
 file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/stubby.yml INPUT ${CMAKE_CURRENT_SOURCE_DIR}/stubby.yml.example)
-# Copy to destination iff no destination file exists.
+
+# Copy stubby.yml to destination iff no destination file exists.
+# This is complicated by (a) not being able to use generators, due to
+# CMake minimum version requirement, and (b) to account for DESTDIR.
+# And in the latter case, if we're adding DESTDIR to the start of the
+# path, we must on Windows remove any initial drive letter. That's what
+# INSTALL appears to do.
 install(CODE "\
-  set(targetdir ${STUBBYCONFDIR})\n\
-  if (\$ENV{DESTDIR})\n\
-    set(targetdir \$ENV{DESTDIR}/\${targetdir})\n\
+  set(targetdir \"${STUBBYCONFDIR}\")\n\
+  set(destdir \"\$ENV{DESTDIR}\")\n\
+  if (destdir)\n\
+    string(REGEX REPLACE \"^([A-Z]:)?/(.*)\" \"\\\\2\" newtarget \"\${targetdir}\")\n\
+    if (newtarget)\n\
+      set(targetdir \"\${newtarget}\")\n\
+    endif ()\n\
+    set(targetdir \"\${destdir}/\${newtarget}\")\n\
   endif ()\n\
-  if (NOT EXISTS \${targetdir}/stubby.yml)\n\
-    file(COPY ${CMAKE_CURRENT_BINARY_DIR}/stubby.yml DESTINATION \${targetdir})\n\
+  if (NOT EXISTS \"\${targetdir}/stubby.yml\")\n\
+    file(COPY \"${CMAKE_CURRENT_BINARY_DIR}/stubby.yml\" DESTINATION \"\${targetdir}\")\n\
+    message(\"-- Installing: \${targetdir}/stubby.yml\")\n\
   endif ()")
 
 if (APPLE)
