Merge topic 'vs-windows-forms'

6c9712c VS: Add Resx configuration to the vcxproj file
This commit is contained in:
Brad King 2013-07-01 09:18:06 -04:00 committed by CMake Topic Stage
commit be9a80a088
3 changed files with 47 additions and 8 deletions

View File

@ -307,7 +307,7 @@ void cmVisualStudio10TargetGenerator::Generate()
this->WriteCustomCommands(); this->WriteCustomCommands();
this->WriteAllSources(); this->WriteAllSources();
this->WriteDotNetReferences(); this->WriteDotNetReferences();
this->WriteEmbeddedResourceGroup();
this->WriteWinRTReferences(); this->WriteWinRTReferences();
this->WriteProjectReferences(); this->WriteProjectReferences();
this->WriteString( this->WriteString(
@ -346,6 +346,47 @@ void cmVisualStudio10TargetGenerator::WriteDotNetReferences()
} }
} }
void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup()
{
std::vector<cmSourceFile*> const& resxObjs =
this->GeneratorTarget->ResxSources;
if(!resxObjs.empty())
{
this->WriteString("<ItemGroup>\n", 1);
for(std::vector<cmSourceFile*>::const_iterator oi = resxObjs.begin();
oi != resxObjs.end(); ++oi)
{
std::string obj = (*oi)->GetFullPath();
this->WriteString("<EmbeddedResource Include=\"", 2);
this->ConvertToWindowsSlash(obj);
(*this->BuildFileStream ) << obj << "\">\n";
this->WriteString("<DependentUpon>", 3);
std::string hFileName = obj.substr(0, obj.find_last_of(".")) + ".h";
(*this->BuildFileStream ) << hFileName;
this->WriteString("</DependentUpon>\n", 3);
std::vector<std::string> const * configs =
this->GlobalGenerator->GetConfigurations();
for(std::vector<std::string>::const_iterator i = configs->begin();
i != configs->end(); ++i)
{
this->WritePlatformConfigTag("LogicalName", i->c_str(), 3);
if(this->Target->GetProperty("VS_GLOBAL_ROOTNAMESPACE"))
{
(*this->BuildFileStream ) << "$(RootNamespace).";
}
(*this->BuildFileStream ) << "%(Filename)";
(*this->BuildFileStream ) << ".resources";
(*this->BuildFileStream ) << "</LogicalName>\n";
}
this->WriteString("</EmbeddedResource>\n", 2);
}
this->WriteString("</ItemGroup>\n", 1);
}
}
void cmVisualStudio10TargetGenerator::WriteWinRTReferences() void cmVisualStudio10TargetGenerator::WriteWinRTReferences()
{ {
std::vector<std::string> references; std::vector<std::string> references;
@ -473,11 +514,6 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues()
"</WindowsAppContainer>\n", 2); "</WindowsAppContainer>\n", 2);
} }
if(!this->GeneratorTarget->ResxSources.empty())
{
this->WriteString("<CLRSupport>true</CLRSupport>\n", 2);
}
this->WriteString("</PropertyGroup>\n", 1); this->WriteString("</PropertyGroup>\n", 1);
} }
} }
@ -670,11 +706,12 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
this->WriteGroupSources(ti->first.c_str(), ti->second, sourceGroups); this->WriteGroupSources(ti->first.c_str(), ti->second, sourceGroups);
} }
std::vector<cmSourceFile*> resxObjs = this->GeneratorTarget->ResxSources; std::vector<cmSourceFile*> const& resxObjs =
this->GeneratorTarget->ResxSources;
if(!resxObjs.empty()) if(!resxObjs.empty())
{ {
this->WriteString("<ItemGroup>\n", 1); this->WriteString("<ItemGroup>\n", 1);
for(std::vector<cmSourceFile*>::iterator oi = resxObjs.begin(); for(std::vector<cmSourceFile*>::const_iterator oi = resxObjs.begin();
oi != resxObjs.end(); ++oi) oi != resxObjs.end(); ++oi)
{ {
std::string obj = (*oi)->GetFullPath(); std::string obj = (*oi)->GetFullPath();

View File

@ -59,6 +59,7 @@ private:
void WriteSources(const char* tool, std::vector<cmSourceFile*> const&); void WriteSources(const char* tool, std::vector<cmSourceFile*> const&);
void WriteAllSources(); void WriteAllSources();
void WriteDotNetReferences(); void WriteDotNetReferences();
void WriteEmbeddedResourceGroup();
void WriteWinRTReferences(); void WriteWinRTReferences();
void WritePathAndIncrementalLinkOptions(); void WritePathAndIncrementalLinkOptions();
void WriteItemDefinitionGroups(); void WriteItemDefinitionGroups();

View File

@ -25,6 +25,7 @@ set(TARGET_SRC
WindowsFormsResx/MyForm.cpp WindowsFormsResx/MyForm.cpp
WindowsFormsResx/Source.cpp WindowsFormsResx/Source.cpp
) )
set_source_files_properties(${TARGET_SRC} PROPERTIES COMPILE_FLAGS "/clr")
set(TARGET_RESX set(TARGET_RESX
WindowsFormsResx/MyForm.resx WindowsFormsResx/MyForm.resx