diff -r 31dfcccc8ff9 Source/cmTarget.cxx --- a/Source/cmTarget.cxx Thu Feb 02 20:12:52 2012 +0200 +++ b/Source/cmTarget.cxx Fri Feb 03 14:06:49 2012 +0200 @@ -1073,6 +1073,16 @@ "generated Visual Studio project. For example, \"System;" "System.Windows.Forms\"."); cm->DefineProperty + ("VS_WINRT_EXTENSIONS", cmProperty::TARGET, + "Visual Studio project C++/CX language extensions for Windows Runtime", + "Can be set to enable C++/CX language extensions."); + cm->DefineProperty + ("VS_WINRT_REFERENCES", cmProperty::TARGET, + "Visual Studio project Windows Runtime Metadata references", + "Adds one or more semicolon-delimited WinRT references to a " + "generated Visual Studio project. For example, \"Windows;" + "Windows.UI.Core\"."); + cm->DefineProperty ("VS_GLOBAL_", cmProperty::TARGET, "Visual Studio project-specific global variable.", "Tell the Visual Studio generator to set the global variable " diff -r 31dfcccc8ff9 Source/cmVisualStudio10TargetGenerator.cxx --- a/Source/cmVisualStudio10TargetGenerator.cxx Thu Feb 02 20:12:52 2012 +0200 +++ b/Source/cmVisualStudio10TargetGenerator.cxx Fri Feb 03 14:06:49 2012 +0200 @@ -255,6 +255,7 @@ this->WriteObjSources(); this->WriteCLSources(); this->WriteDotNetReferences(); + this->WriteWinRTReferences(); this->WriteProjectReferences(); this->WriteString( "Target->GetProperty("VS_WINRT_REFERENCES"); + if(vsWinRTReferences) + { + std::string references(vsWinRTReferences); + std::string::size_type position = 0; + + this->WriteString("\n", 1); + while(references.length() > 0) + { + if((position = references.find(";")) == std::string::npos) + { + position = references.length() + 1; + } + + this->WriteString("BuildFileStream) << + cmVS10EscapeXML(references.substr(0, position)) << "\">\n"; + this->WriteString("true\n", 3); + this->WriteString("\n", 2); + + references.erase(0, position + 1); + } + + this->WriteString("\n", 1); + } +} + // ConfigurationType Application, Utility StaticLibrary DynamicLibrary void cmVisualStudio10TargetGenerator::WriteProjectConfigurations() @@ -372,7 +403,8 @@ this->WriteString(mfcLine.c_str(), 2); if(this->Target->GetType() <= cmTarget::MODULE_LIBRARY && - this->ClOptions[*i]->UsingUnicode()) + this->ClOptions[*i]->UsingUnicode() || + this->Target->GetPropertyAsBool("VS_WINRT_EXTENSIONS")) { this->WriteString("Unicode\n", 2); } @@ -387,6 +419,10 @@ pts += "\n"; this->WriteString(pts.c_str(), 2); } + if(this->Target->GetPropertyAsBool("VS_WINRT_EXTENSIONS")) + { + this->WriteString("true"); + } this->WriteString("\n", 1); } } diff -r 31dfcccc8ff9 Source/cmVisualStudio10TargetGenerator.h --- a/Source/cmVisualStudio10TargetGenerator.h Thu Feb 02 20:12:52 2012 +0200 +++ b/Source/cmVisualStudio10TargetGenerator.h Fri Feb 03 14:06:49 2012 +0200 @@ -48,6 +48,7 @@ void WriteProjectConfigurationValues(); void WriteCLSources(); void WriteDotNetReferences(); + void WriteWinRTReferences(); void WriteObjSources(); void WritePathAndIncrementalLinkOptions(); void WriteItemDefinitionGroups();