BUG: Avoid adding unused rules to special targets like ALL_BUILD. Make sure project regeneration rules go only in desired targets.

This commit is contained in:
Brad King 2006-02-14 16:32:20 -05:00
parent bd0b829ffb
commit 916ea2bad2
3 changed files with 39 additions and 2 deletions

View File

@ -86,6 +86,12 @@ void cmGlobalVisualStudio8Generator::Generate()
no_output, no_depends, no_output, no_depends,
no_working_directory, no_working_directory,
"echo", "Checking build system"); "echo", "Checking build system");
cmTarget* tgt = mf->FindTarget(CMAKE_CHECK_BUILD_SYSTEM_TARGET);
if(!tgt)
{
cmSystemTools::Error("Error adding target " CMAKE_CHECK_BUILD_SYSTEM_TARGET);
continue;
}
// Add a custom rule to re-run CMake if any input files changed. // Add a custom rule to re-run CMake if any input files changed.
const char* suppRegenRule = const char* suppRegenRule =
@ -134,6 +140,14 @@ void cmGlobalVisualStudio8Generator::Generate()
mf->AddCustomCommandToOutput( mf->AddCustomCommandToOutput(
CMAKE_CHECK_BUILD_SYSTEM_TARGET ".vcproj.cmake", listFiles, CMAKE_CHECK_BUILD_SYSTEM_TARGET ".vcproj.cmake", listFiles,
no_main_dependency, commandLines, no_comment, no_working_directory, true); no_main_dependency, commandLines, no_comment, no_working_directory, true);
if(cmSourceFile* file = mf->GetSource(CMAKE_CHECK_BUILD_SYSTEM_TARGET ".vcproj.cmake.rule"))
{
tgt->GetSourceFiles().push_back(file);
}
else
{
cmSystemTools::Error("Error adding rule for " CMAKE_CHECK_BUILD_SYSTEM_TARGET ".vcproj.cmake");
}
} }
} }
} }

View File

@ -120,7 +120,10 @@ void cmLocalVisualStudio6Generator::OutputDSPFile()
{ {
if ((l->second.GetType() != cmTarget::INSTALL_FILES) if ((l->second.GetType() != cmTarget::INSTALL_FILES)
&& (l->second.GetType() != cmTarget::INSTALL_PROGRAMS) && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)
&& (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) != 0)) && (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) != 0)
&& (strcmp(l->first.c_str(), "ALL_BUILD") != 0)
&& (strcmp(l->first.c_str(), "RUN_TESTS") != 0)
&& (strcmp(l->first.c_str(), "INSTALL") != 0))
{ {
cmTarget& target = l->second; cmTarget& target = l->second;
bool sameAsTarget = false; bool sameAsTarget = false;
@ -264,6 +267,14 @@ void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmTarget& tgt)
const char* no_working_directory = 0; const char* no_working_directory = 0;
m_Makefile->AddCustomCommandToOutput(dspname.c_str(), listFiles, makefileIn.c_str(), m_Makefile->AddCustomCommandToOutput(dspname.c_str(), listFiles, makefileIn.c_str(),
commandLines, no_comment, no_working_directory, true); commandLines, no_comment, no_working_directory, true);
if(cmSourceFile* file = m_Makefile->GetSource(makefileIn.c_str()))
{
tgt.GetSourceFiles().push_back(file);
}
else
{
cmSystemTools::Error("Error adding rule for ", makefileIn.c_str());
}
} }

View File

@ -160,7 +160,11 @@ void cmLocalVisualStudio7Generator::OutputVCProjFile()
{ {
if ((l->second.GetType() != cmTarget::INSTALL_FILES) if ((l->second.GetType() != cmTarget::INSTALL_FILES)
&& (l->second.GetType() != cmTarget::INSTALL_PROGRAMS) && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)
&& (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) != 0)) && (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) != 0)
&& (strcmp(l->first.c_str(), "ALL_BUILD") != 0)
&& (strcmp(l->first.c_str(), "RUN_TESTS") != 0)
&& (strcmp(l->first.c_str(), "INSTALL") != 0)
&& (strcmp(l->first.c_str(), CMAKE_CHECK_BUILD_SYSTEM_TARGET) != 0))
{ {
cmTarget& target = l->second; cmTarget& target = l->second;
bool sameAsTarget = false; bool sameAsTarget = false;
@ -268,6 +272,14 @@ void cmLocalVisualStudio7Generator::AddVCProjBuildRule(cmTarget& tgt)
const char* no_comment = 0; const char* no_comment = 0;
m_Makefile->AddCustomCommandToOutput(dspname.c_str(), listFiles, makefileIn.c_str(), m_Makefile->AddCustomCommandToOutput(dspname.c_str(), listFiles, makefileIn.c_str(),
commandLines, no_comment, no_working_directory, true); commandLines, no_comment, no_working_directory, true);
if(cmSourceFile* file = m_Makefile->GetSource(makefileIn.c_str()))
{
tgt.GetSourceFiles().push_back(file);
}
else
{
cmSystemTools::Error("Error adding rule for ", makefileIn.c_str());
}
} }