Merge topic 'vs-wince-deployment'

f5d72be57a VS: Fix deployment for WinCE projects

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2907
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index c4040e1..178e717 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -376,7 +376,13 @@
   {
     Elem e0(BuildFileStream, "Project");
     e0.Attribute("DefaultTargets", "Build");
-    e0.Attribute("ToolsVersion", this->GlobalGenerator->GetToolsVersion());
+    const char* toolsVersion = this->GlobalGenerator->GetToolsVersion();
+    if (this->GlobalGenerator->GetVersion() ==
+          cmGlobalVisualStudioGenerator::VS12 &&
+        this->GlobalGenerator->TargetsWindowsCE()) {
+      toolsVersion = "4.0";
+    }
+    e0.Attribute("ToolsVersion", toolsVersion);
     e0.Attribute("xmlns",
                  "http://schemas.microsoft.com/developer/msbuild/2003");
 
diff --git a/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake b/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake
index c66676f..6ab3833 100644
--- a/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake
+++ b/Tests/RunCMake/VS10ProjectWinCE/VsCEDebuggerDeploy-check.cmake
@@ -13,6 +13,7 @@
 
 set(FoundCEAdditionalFiles FALSE)
 set(FoundRemoteDirectory FALSE)
+set(FoundToolsVersion4 FALSE)
 
 file(STRINGS "${vcProjectFile}" lines)
 foreach(line IN LISTS lines)
@@ -20,6 +21,8 @@
     set(FoundCEAdditionalFiles TRUE)
   elseif(line MATCHES " *<RemoteDirectory>[A-Za-z0-9\\]+</RemoteDirectory> *$")
     set(FoundRemoteDirectory TRUE)
+  elseif(line MATCHES " *<Project +.*ToolsVersion=\"4.0\".*> *$")
+    set(FoundToolsVersion4 TRUE)
   endif()
 endforeach()
 
@@ -32,3 +35,8 @@
   set(RunCMake_TEST_FAILED "RemoteDirectory not found or not set correctly.")
   return()
 endif()
+
+if(NOT FoundToolsVersion4)
+  set(RunCMake_TEST_FAILED "Failed to find correct ToolsVersion=\"4.0\" .")
+  return()
+endif()