diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2009-12-09 16:52:10 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2009-12-09 16:52:10 (GMT) |
commit | 39f851dc7c3d2c55a2d41bdd218e9bba65972298 (patch) | |
tree | 913aae2136446511c5a564c44e784f1a59e5b35e /Source/cmVisualStudio10TargetGenerator.cxx | |
parent | 9478ad0945d76fc24eba1c3e88ef001ed22f160f (diff) | |
download | CMake-39f851dc7c3d2c55a2d41bdd218e9bba65972298.zip CMake-39f851dc7c3d2c55a2d41bdd218e9bba65972298.tar.gz CMake-39f851dc7c3d2c55a2d41bdd218e9bba65972298.tar.bz2 |
Fix for bug 10001, make vs 10 compiler .rc files correctly
Diffstat (limited to 'Source/cmVisualStudio10TargetGenerator.cxx')
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 69 |
1 files 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<cmSourceFile*> customBuild; std::vector<cmSourceFile*> none; std::vector<cmSourceFile*> headers; + std::vector<cmSourceFile*> resource; for(std::vector<cmSourceFile*>::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("<ItemGroup>\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("<ClInclude Include=\"", 2); + } + else if(cl) + { + this->WriteString("<ClCompile Include=\"", 2); + } + else if(rc) + { + this->WriteString("<ResourceCompile Include=\"", 2); + } + else + { + this->WriteString("<None Include=\"", 2); + } + (*this->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("</ClCompile>\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("<ClInclude Include=\"", 2); - } - else if(cl) - { - this->WriteString("<ClCompile Include=\"", 2); - } - else - { - this->WriteString("<None Include=\"", 2); - } - (*this->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("</ClCompile>\n", 2); - } - else - { - (*this->BuildFileStream ) << " />\n"; - } + (*this->BuildFileStream ) << " />\n"; } } } |