[Cmake-commits] CMake branch, next, updated. v2.8.6-2054-g1c083ab

Brad King brad.king at kitware.com
Mon Nov 28 11:56:00 EST 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  1c083ab76182721c80bf210d00768290e6af4ce1 (commit)
       via  a1f976ce0e62baf513c8726c59aba5f75a0335c6 (commit)
      from  c68b52707b3cab82686b24a44db8749a059de309 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1c083ab76182721c80bf210d00768290e6af4ce1
commit 1c083ab76182721c80bf210d00768290e6af4ce1
Merge: c68b527 a1f976c
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Nov 28 11:55:42 2011 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Nov 28 11:55:42 2011 -0500

    Merge topic 'vs-managed-projects' into next
    
    a1f976c VS: Add support for three new project properties (#12586)


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a1f976ce0e62baf513c8726c59aba5f75a0335c6
commit a1f976ce0e62baf513c8726c59aba5f75a0335c6
Author:     Aaron Ten Clay <aarontc at aarontc.com>
AuthorDate: Wed Nov 23 14:11:00 2011 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Mon Nov 28 11:44:04 2011 -0500

    VS: Add support for three new project properties (#12586)
    
    VS_GLOBAL_PROJECT_TYPES: A string containing UUIDs to embed in the
    Visual Studio project file under <ProjectTypes>.
    
    VS_GLOBAL_KEYWORD: Allows specification of a keyword like "ManagedCProj"
    instead of the default "Win32Proj", under <Keyword>
    
    VS_DOTNET_REFERENCES: Semicolon-delimited list of .NET references to add
    to the project, which creates a new <ItemGroup>.

diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index dad0353..d021990 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -1038,6 +1038,29 @@ void cmTarget::DefineProperties(cmake *cm)
      "Can be set to change the visual studio source code control "
      "auxpath property.");
   cm->DefineProperty
+    ("VS_GLOBAL_PROJECT_TYPES", cmProperty::TARGET,
+     "Visual Studio project type(s).",
+     "Can be set to one or more UUIDs recognized by Visual Studio "
+     "to indicate the type of project. This value is copied "
+     "verbatim into the generated project file. Example for a "
+     "managed C++ unit testing project: \""
+     "{3AC096D0-A1C2-E12C-1390-A8335801FDAB};"
+     "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\". UUIDs are "
+     "semicolon-delimited.");
+  cm->DefineProperty
+    ("VS_GLOBAL_KEYWORD", cmProperty::TARGET,
+     "Visual Studio project keyword.",
+     "Sets the \"keyword\" attribute for a generated Visual Studio "
+     "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_DOTNET_REFERENCES", cmProperty::TARGET,
+     "Visual Studio managed project .NET references",
+     "Adds one or more semicolon-delimited .NET references to a "
+     "generated Visual Studio project. For example, \"System;"
+     "System.Windows.Forms\".");
+  cm->DefineProperty
     ("VS_GLOBAL_<variable>", cmProperty::TARGET,
      "Visual Studio project-specific global variable.",
      "Tell the Visual Studio generator to set the global variable "
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index fcb668a..a219ae9 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -178,6 +178,15 @@ void cmVisualStudio10TargetGenerator::Generate()
   this->WriteString("<ProjectGUID>", 2);
   (*this->BuildFileStream) <<  "{" << this->GUID << "}</ProjectGUID>\n";
 
+  const char* vsProjectTypes =
+    this->Target->GetProperty("VS_GLOBAL_PROJECT_TYPES");
+  if(vsProjectTypes)
+    {
+    this->WriteString("<ProjectTypes>", 2);
+    (*this->BuildFileStream) << cmVS10EscapeXML(vsProjectTypes) <<
+      "</ProjectTypes>\n";
+    }
+
   const char* vsProjectName = this->Target->GetProperty("VS_SCC_PROJECTNAME");
   const char* vsLocalPath = this->Target->GetProperty("VS_SCC_LOCALPATH");
   const char* vsProvider = this->Target->GetProperty("VS_SCC_PROVIDER");
@@ -203,7 +212,19 @@ void cmVisualStudio10TargetGenerator::Generate()
       }
     }
 
-  this->WriteString("<Keyword>Win32Proj</Keyword>\n", 2);
+  const char* vsGlobalKeyword =
+    this->Target->GetProperty("VS_GLOBAL_KEYWORD");
+  if(!vsGlobalKeyword)
+    {
+    this->WriteString("<Keyword>Win32Proj</Keyword>\n", 2);
+    }
+  else
+    {
+    this->WriteString("<Keyword>", 2);
+    (*this->BuildFileStream) << cmVS10EscapeXML(vsGlobalKeyword) <<
+      "</Keyword>\n";
+    }
+
   this->WriteString("<Platform>", 2);
   (*this->BuildFileStream) << this->Platform << "</Platform>\n";
   const char* projLabel = this->Target->GetProperty("PROJECT_LABEL");
@@ -233,6 +254,7 @@ void cmVisualStudio10TargetGenerator::Generate()
   this->WriteCustomCommands();
   this->WriteObjSources();
   this->WriteCLSources();
+  this->WriteDotNetReferences();
   this->WriteProjectReferences();
   this->WriteString(
     "<Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\""
@@ -244,6 +266,39 @@ void cmVisualStudio10TargetGenerator::Generate()
   this->WriteGroups();
 }
 
+void cmVisualStudio10TargetGenerator::WriteDotNetReferences()
+{
+  const char* vsDotNetReferences
+    = this->Target->GetProperty("VS_DOTNET_REFERENCES");
+  if(vsDotNetReferences)
+    {
+    std::string references(vsDotNetReferences);
+    std::string::size_type position = 0;
+
+    this->WriteString("<ItemGroup>\n", 1);
+    while(references.length() > 0)
+      {
+      if((position = references.find(";")) == std::string::npos)
+        {
+        position = references.length() + 1;
+        }
+
+      this->WriteString("<Reference Include=\"", 2);
+      (*this->BuildFileStream) <<
+        cmVS10EscapeXML(references.substr(0, position)) << "\">\n";
+      this->WriteString("<CopyLocalSatelliteAssemblies>true"
+                        "</CopyLocalSatelliteAssemblies>\n", 3);
+      this->WriteString("<ReferenceOutputAssembly>true"
+                        "</ReferenceOutputAssembly>\n", 3);
+      this->WriteString("</Reference>\n", 2);
+
+      references.erase(0, position + 1);
+      }
+
+    this->WriteString("</ItemGroup>\n", 1);
+    }
+}
+
 // ConfigurationType Application, Utility StaticLibrary DynamicLibrary
 
 void cmVisualStudio10TargetGenerator::WriteProjectConfigurations()
diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h
index c3c27f4..6702509 100644
--- a/Source/cmVisualStudio10TargetGenerator.h
+++ b/Source/cmVisualStudio10TargetGenerator.h
@@ -47,6 +47,7 @@ private:
   void WriteProjectConfigurations();
   void WriteProjectConfigurationValues();
   void WriteCLSources();
+  void WriteDotNetReferences();
   void WriteObjSources();
   void WritePathAndIncrementalLinkOptions();
   void WriteItemDefinitionGroups();

-----------------------------------------------------------------------

Summary of changes:
 Source/cmTarget.cxx                        |   23 +++++++++++
 Source/cmVisualStudio10TargetGenerator.cxx |   57 +++++++++++++++++++++++++++-
 Source/cmVisualStudio10TargetGenerator.h   |    1 +
 3 files changed, 80 insertions(+), 1 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list