diff options
Diffstat (limited to 'Source/cmLocalVisualStudio6Generator.cxx')
-rw-r--r-- | Source/cmLocalVisualStudio6Generator.cxx | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index 5b5ce0b..ec4bbe2 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -289,11 +289,18 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout, std::string source = cc->first; const cmSourceGroup::Commands& commands = cc->second.m_Commands; std::vector<std::string> depends; - const char* compileFlags = 0; + std::string compileFlags; if(cc->second.m_SourceFile) { // Check for extra compiler flags. compileFlags = cc->second.m_SourceFile->GetProperty("COMPILE_FLAGS"); + if(cmSystemTools::GetFileFormat( + cc->second.m_SourceFile->GetSourceExtension().c_str()) + == cmSystemTools::CXX_FILE_FORMAT) + { + // force a C++ file type + compileFlags += " /TP "; + } // Check for extra object-file dependencies. const char* dependsValue = @@ -329,13 +336,14 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout, std::string totalCommandStr; totalCommandStr = this->CombineCommands(commands, totalCommand, source.c_str()); - const char* comment = totalCommand.m_Comment.c_str(); + const char* comment = totalCommand.m_Comment.c_str(); + const char* flags = compileFlags.size() ? compileFlags.c_str(): 0; this->WriteCustomRule(fout, source.c_str(), totalCommandStr.c_str(), (*comment?comment:"Custom Rule"), totalCommand.m_Depends, - totalCommand.m_Outputs, compileFlags); + totalCommand.m_Outputs, flags); } - else if(compileFlags) + else if(compileFlags.size()) { for(std::vector<std::string>::iterator i = m_Configurations.begin(); i != m_Configurations.end(); ++i) @@ -895,8 +903,6 @@ void cmLocalVisualStudio6Generator::WriteDSPHeader(std::ostream& fout, const cha flagsDebugRel += " -DCMAKE_INTDIR=\\\"RelWithDebInfo\\\" "; flags = " "; flags = m_Makefile->GetDefinition("CMAKE_CXX_FLAGS"); - // force a C++ file type - flags += " /TP "; } // if C and the target is not CXX else if(gen->GetLanguageEnabled("C") && !target.HasCxx()) |