Преглед изворни кода

BUG: fix for 4524, add support for target properties to set vs source code control information

Bill Hoffman пре 17 година
родитељ
комит
637418a835
2 измењених фајлова са 32 додато и 3 уклоњено
  1. 29 3
      Source/cmLocalVisualStudio7Generator.cxx
  2. 3 0
      Source/cmSetTargetPropertiesCommand.h

+ 29 - 3
Source/cmLocalVisualStudio7Generator.cxx

@@ -1832,6 +1832,26 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
     {
     keyword = "Win32Proj";
     }
+  const char* vsProjectname = target.GetProperty("VS_SCC_PROJECTNAME");
+  if (!vsProjectname)
+    {
+    vsProjectname = "";
+    }
+  const char* vsLocalpath = target.GetProperty("VS_SCC_LOCALPATH");
+  if (!vsLocalpath)
+    {
+    vsLocalpath = "";
+    }
+  const char* vsProvider = target.GetProperty("VS_SCC_PROVIDER");
+  std::string providerString;
+  if (!vsProvider)
+    {
+    providerString = "";
+    }
+  else
+    {
+    providerString = "\tSccProvider=\"" + std::string(vsProvider) + "\"\n";
+    }
   cmGlobalVisualStudio7Generator* gg =
     static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
   fout << "\tName=\"" << projLabel << "\"\n";
@@ -1839,9 +1859,15 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
     {
     fout << "\tProjectGUID=\"{" << gg->GetGUID(libName) << "}\"\n";
     }
-  fout << "\tSccProjectName=\"\"\n"
-       << "\tSccLocalPath=\"\"\n"
-       << "\tKeyword=\"" << keyword << "\">\n"
+  // if we have all the required Source code control tags
+  // then add that to the project
+  if(vsProvider && vsLocalpath && vsProjectname)
+    {
+    fout << "\tSccProjectName=\"" << vsProjectname << "\"\n"
+         << "\tSccLocalPath=\"" << vsLocalpath << "\"\n"
+         << "\tSccProvider=\"" << providerString << "\"\n";
+    }
+  fout << "\tKeyword=\"" << keyword << "\">\n"
        << "\t<Platforms>\n"
        << "\t\t<Platform\n\t\t\tName=\"" << this->PlatformName << "\"/>\n"
        << "\t</Platforms>\n";

+ 3 - 0
Source/cmSetTargetPropertiesCommand.h

@@ -145,6 +145,9 @@ public:
         "the target in an IDE like visual studio.  VS_KEYWORD can be set "
         "to change the visual studio keyword, for example QT integration "
         "works better if this is set to Qt4VSv1.0.\n"
+        "VS_SCC_PROJECTNAME, VS_SCC_LOCALPATH, VS_SCC_PROVIDER can be set "
+        "to add support for source control bindings in a  Visual Studio "
+        "project file.\n"
         "When a library is built CMake by default generates code to remove "
         "any existing library using all possible names.  This is needed "
         "to support libraries that switch between STATIC and SHARED by "