BUG: fix for bug#3908 if header_file_only is set on cxx files in visual studio do not compile them

This commit is contained in:
Bill Hoffman 2006-10-13 16:13:14 -04:00
parent bf74cd9d83
commit 655ba54e2d
1 changed files with 14 additions and 4 deletions

View File

@ -1148,7 +1148,6 @@ void cmLocalVisualStudio7Generator
{ {
objectName = ""; objectName = "";
} }
// Add per-source flags. // Add per-source flags.
const char* cflags = (*sf)->GetProperty("COMPILE_FLAGS"); const char* cflags = (*sf)->GetProperty("COMPILE_FLAGS");
if(cflags) if(cflags)
@ -1161,6 +1160,12 @@ void cmLocalVisualStudio7Generator
const char* linkLanguage = target.GetLinkerLanguage const char* linkLanguage = target.GetLinkerLanguage
(this->GetGlobalGenerator()); (this->GetGlobalGenerator());
// If lang is set, the compiler will generate code automatically.
// If HEADER_FILE_ONLY is set, we must suppress this generation in
// the project file
bool excludedFromBuild =
(lang && (*sf)->GetPropertyAsBool("HEADER_FILE_ONLY"));
// if the source file does not match the linker language // if the source file does not match the linker language
// then force c or c++ // then force c or c++
if(linkLanguage && lang && strcmp(lang, linkLanguage) != 0) if(linkLanguage && lang && strcmp(lang, linkLanguage) != 0)
@ -1216,7 +1221,7 @@ void cmLocalVisualStudio7Generator
command->GetOutputs(), flags); command->GetOutputs(), flags);
} }
else if(compileFlags.size() || additionalDeps.length() else if(compileFlags.size() || additionalDeps.length()
|| objectName.size()) || objectName.size() || excludedFromBuild)
{ {
const char* aCompilerTool = "VCCLCompilerTool"; const char* aCompilerTool = "VCCLCompilerTool";
std::string ext = (*sf)->GetSourceExtension(); std::string ext = (*sf)->GetSourceExtension();
@ -1238,8 +1243,13 @@ void cmLocalVisualStudio7Generator
{ {
fout << "\t\t\t\t<FileConfiguration\n" fout << "\t\t\t\t<FileConfiguration\n"
<< "\t\t\t\t\tName=\"" << *i << "\t\t\t\t\tName=\"" << *i
<< "|" << this->PlatformName << "\">\n" << "|" << this->PlatformName << "\"";
<< "\t\t\t\t\t<Tool\n" if(excludedFromBuild)
{
fout << " ExcludedFromBuild=\"true\"";
}
fout << ">\n";
fout << "\t\t\t\t\t<Tool\n"
<< "\t\t\t\t\tName=\"" << aCompilerTool << "\"\n"; << "\t\t\t\t\tName=\"" << aCompilerTool << "\"\n";
if(compileFlags.size()) if(compileFlags.size())
{ {