summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2011-04-01 20:28:41 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2011-04-01 20:28:41 (GMT)
commit9a6ff95072f9e03713e1a5d16338d97f9b371f4b (patch)
treef01b7446fa8610ef49780d873be649c8ca1ff8c3 /Source
parent0315d3b66f31a6db21242a020f0a666547e470cc (diff)
downloadCMake-9a6ff95072f9e03713e1a5d16338d97f9b371f4b.zip
CMake-9a6ff95072f9e03713e1a5d16338d97f9b371f4b.tar.gz
CMake-9a6ff95072f9e03713e1a5d16338d97f9b371f4b.tar.bz2
Fix for bug where VS2010 did not use .obj files as part of the build.
For VS2010 if a precompiled .obj file was the output of a custom commad, it was used as part of the build. If it was not, then VS did not use it as part of the build. This commit updates the test to check for this issue, and fixes the problem. This fixes bugs #0011891 and
Diffstat (limited to 'Source')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx26
1 files changed, 21 insertions, 5 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index f872838..b8fef25 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -449,6 +449,8 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
bool header = (*s)->GetPropertyAsBool("HEADER_FILE_ONLY")
|| this->GlobalGenerator->IgnoreFile
((*s)->GetExtension().c_str());
+ std::string ext =
+ cmSystemTools::LowerCase((*s)->GetExtension());
if(!lang)
{
lang = "None";
@@ -469,7 +471,7 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
{
headers.push_back(sf);
}
- else if(sf->GetExtension() == "idl")
+ else if(ext == "idl")
{
idls.push_back(sf);
}
@@ -636,14 +638,28 @@ void cmVisualStudio10TargetGenerator::WriteObjSources()
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
source != sources.end(); ++source)
{
- if((*source)->GetExtension() == "obj")
+ std::string ext =
+ cmSystemTools::LowerCase((*source)->GetExtension());
+ if(ext == "obj" || ext == "o")
{
if(first)
{
this->WriteString("<ItemGroup>\n", 1);
first = false;
}
- this->WriteString("<None Include=\"", 2);
+ // If an object file is generated, then vs10
+ // will use it in the build, and we have to list
+ // it as None instead of Object
+ if((*source)->GetPropertyAsBool("GENERATED"))
+ {
+ this->WriteString("<None Include=\"", 2);
+ }
+ // If it is not a generated object then we have
+ // to use the Object type
+ else
+ {
+ this->WriteString("<Object Include=\"", 2);
+ }
(*this->BuildFileStream ) << (*source)->GetFullPath() << "\" />\n";
}
}
@@ -665,8 +681,8 @@ void cmVisualStudio10TargetGenerator::WriteCLSources()
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
source != sources.end(); ++source)
{
- std::string ext = (*source)->GetExtension();
- if((*source)->GetCustomCommand() || ext == "obj")
+ std::string ext = cmSystemTools::LowerCase((*source)->GetExtension());
+ if((*source)->GetCustomCommand() || ext == "o" || ext == "obj")
{
continue;
}