From 39f851dc7c3d2c55a2d41bdd218e9bba65972298 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Wed, 9 Dec 2009 11:52:10 -0500 Subject: Fix for bug 10001, make vs 10 compiler .rc files correctly --- Source/cmVisualStudio10TargetGenerator.cxx | 69 +++++++++++++++++------------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 17d1685..4a8e161 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -396,6 +396,7 @@ void cmVisualStudio10TargetGenerator::WriteGroups() std::vector customBuild; std::vector none; std::vector headers; + std::vector resource; for(std::vector::const_iterator s = classes.begin(); s != classes.end(); s++) @@ -417,6 +418,10 @@ void cmVisualStudio10TargetGenerator::WriteGroups() { clCompile.push_back(sf); } + if(strcmp(lang, "RC") == 0) + { + resource.push_back(sf); + } else if(sf->GetCustomCommand()) { customBuild.push_back(sf); @@ -448,6 +453,7 @@ void cmVisualStudio10TargetGenerator::WriteGroups() 0); this->WriteGroupSources("ClCompile", clCompile, sourceGroups); this->WriteGroupSources("ClInclude", headers, sourceGroups); + this->WriteGroupSources("ResourceCompile", resource, sourceGroups); this->WriteGroupSources("CustomBuild", customBuild, sourceGroups); this->WriteString("\n", 1); @@ -568,37 +574,40 @@ void cmVisualStudio10TargetGenerator::WriteCLSources() ((*source)->GetExtension().c_str()); const char* lang = (*source)->GetLanguage(); bool cl = lang && (strcmp(lang, "C") == 0 || strcmp(lang, "CXX") ==0); + bool rc = lang && (strcmp(lang, "RC") == 0); + std::string sourceFile = (*source)->GetFullPath(); + sourceFile = cmSystemTools::RelativePath( + this->Makefile->GetCurrentOutputDirectory(), + sourceFile.c_str()); + this->ConvertToWindowsSlash(sourceFile); + // output the source file + if(header) + { + this->WriteString("WriteString("WriteString("WriteString("BuildFileStream ) << sourceFile << "\""; + // ouput any flags specific to this source file + if(cl && this->OutputSourceSpecificFlags(*source)) + { + // if the source file has specific flags the tag + // is ended on a new line + this->WriteString("\n", 2); + } + else { - std::string sourceFile = (*source)->GetFullPath(); - sourceFile = cmSystemTools::RelativePath( - this->Makefile->GetCurrentOutputDirectory(), - sourceFile.c_str()); - this->ConvertToWindowsSlash(sourceFile); - // output the source file - if(header) - { - this->WriteString("WriteString("WriteString("BuildFileStream ) << sourceFile << "\""; - // ouput any flags specific to this source file - if(cl && this->OutputSourceSpecificFlags(*source)) - { - // if the source file has specific flags the tag - // is ended on a new line - this->WriteString("\n", 2); - } - else - { - (*this->BuildFileStream ) << " />\n"; - } + (*this->BuildFileStream ) << " />\n"; } } } -- cgit v0.12