소스 검색

VS: Add VS_GLOBAL_ROOTNAMESPACE target property

Add a setting for Visual Studio projects for the root namespace in the
"Globals" PropertyGroup section of the project file.
John Farrier 12 년 전
부모
커밋
cca955a27c
2개의 변경된 파일14개의 추가작업 그리고 0개의 파일을 삭제
  1. 5 0
      Source/cmTarget.cxx
  2. 9 0
      Source/cmVisualStudio10TargetGenerator.cxx

+ 5 - 0
Source/cmTarget.cxx

@@ -1302,6 +1302,11 @@ void cmTarget::DefineProperties(cmake *cm)
      "project. Defaults to \"Win32Proj\". You may wish to override "
      "this value with \"ManagedCProj\", for example, in a Visual "
      "Studio managed C++ unit test project.");
+  cm->DefineProperty
+    ("VS_GLOBAL_ROOTNAMESPACE", cmProperty::TARGET,
+     "Visual Studio project root namespace.",
+     "Sets the \"RootNamespace\" attribute for a generated Visual Studio "
+     "project.  The attribute will be generated only if this is set.");
   cm->DefineProperty
     ("VS_DOTNET_REFERENCES", cmProperty::TARGET,
      "Visual Studio managed project .NET references",

+ 9 - 0
Source/cmVisualStudio10TargetGenerator.cxx

@@ -262,6 +262,15 @@ void cmVisualStudio10TargetGenerator::Generate()
       "</Keyword>\n";
     }
 
+  const char* vsGlobalRootNamespace =
+    this->Target->GetProperty("VS_GLOBAL_ROOTNAMESPACE");
+  if(vsGlobalRootNamespace)
+    {
+    this->WriteString("<RootNamespace>", 2);
+    (*this->BuildFileStream) << cmVS10EscapeXML(vsGlobalRootNamespace) <<
+      "</RootNamespace>\n";
+    }
+
   this->WriteString("<Platform>", 2);
   (*this->BuildFileStream) << this->Platform << "</Platform>\n";
   const char* projLabel = this->Target->GetProperty("PROJECT_LABEL");