diff options
author | Brad King <brad.king@kitware.com> | 2006-02-09 23:42:58 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2006-02-09 23:42:58 (GMT) |
commit | 1b5e3f41369e8bf6a43c79eb62a4d636caab2b5a (patch) | |
tree | 5bd3900375b7cfb39e6fd067be5dfb819caaa387 | |
parent | e666b8e825a59d2adf95eaabfa6685fe28c21067 (diff) | |
download | CMake-1b5e3f41369e8bf6a43c79eb62a4d636caab2b5a.zip CMake-1b5e3f41369e8bf6a43c79eb62a4d636caab2b5a.tar.gz CMake-1b5e3f41369e8bf6a43c79eb62a4d636caab2b5a.tar.bz2 |
BUG: Fixed generation of cmake re-run rules.
-rw-r--r-- | Source/cmLocalVisualStudio6Generator.cxx | 21 | ||||
-rw-r--r-- | Source/cmLocalVisualStudio6Generator.h | 2 | ||||
-rw-r--r-- | Source/cmLocalVisualStudio7Generator.cxx | 23 | ||||
-rw-r--r-- | Source/cmLocalVisualStudio7Generator.h | 2 |
4 files changed, 25 insertions, 23 deletions
diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index f3155f6..8873ab6 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -85,6 +85,15 @@ void cmLocalVisualStudio6Generator::OutputDSPFile() for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++) { + // Add a rule to regenerate the build system when the target + // specification source changes. + const char* suppRegenRule = + m_Makefile->GetDefinition("CMAKE_SUPPRESS_REGENERATION"); + if (!cmSystemTools::IsOn(suppRegenRule)) + { + this->AddDSPBuildRule(l->second); + } + // INCLUDE_EXTERNAL_MSPROJECT command only affects the workspace // so don't build a projectfile for it if ((l->second.GetType() != cmTarget::INSTALL_FILES) @@ -210,9 +219,9 @@ void cmLocalVisualStudio6Generator::CreateSingleDSP(const char *lname, cmTarget } -void cmLocalVisualStudio6Generator::AddDSPBuildRule() +void cmLocalVisualStudio6Generator::AddDSPBuildRule(cmTarget& tgt) { - std::string dspname = *(m_CreatedProjectNames.end()-1); + std::string dspname = tgt.GetName(); dspname += ".dsp.cmake"; const char* dsprule = m_Makefile->GetRequiredDefinition("CMAKE_COMMAND"); cmCustomCommandLine commandLine; @@ -262,14 +271,6 @@ void cmLocalVisualStudio6Generator::WriteDSPFile(std::ostream& fout, const char *libName, cmTarget &target) { - // if we should add regen rule then... - const char *suppRegenRule = - m_Makefile->GetDefinition("CMAKE_SUPPRESS_REGENERATION"); - if (!cmSystemTools::IsOn(suppRegenRule)) - { - this->AddDSPBuildRule(); - } - // For utility targets need custom command since pre- and post- // build does not do anything in Visual Studio 6. In order for the // rules to run in the correct order as custom commands, we need diff --git a/Source/cmLocalVisualStudio6Generator.h b/Source/cmLocalVisualStudio6Generator.h index 6b8286c..f0067cb 100644 --- a/Source/cmLocalVisualStudio6Generator.h +++ b/Source/cmLocalVisualStudio6Generator.h @@ -79,7 +79,7 @@ private: cmTarget &tgt, std::vector<cmSourceGroup> &sgs); void WriteDSPFooter(std::ostream& fout); - void AddDSPBuildRule(); + void AddDSPBuildRule(cmTarget& tgt); void WriteCustomRule(std::ostream& fout, const char* source, const char* command, diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 4b03bbd..02db5aa 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -101,6 +101,16 @@ void cmLocalVisualStudio7Generator::OutputVCProjFile() for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++) { + // Add a rule to regenerate the build system when the target + // specification source changes. + const char* suppRegenRule = + m_Makefile->GetDefinition("CMAKE_SUPPRESS_REGENERATION"); + if (!cmSystemTools::IsOn(suppRegenRule) && + (strcmp(l->first.c_str(), CMAKE_CHECK_BUILD_SYSTEM_TARGET) != 0)) + { + this->AddVCProjBuildRule(l->second); + } + // INCLUDE_EXTERNAL_MSPROJECT command only affects the workspace // so don't build a projectfile for it if ((l->second.GetType() != cmTarget::INSTALL_FILES) @@ -213,9 +223,9 @@ void cmLocalVisualStudio7Generator::CreateSingleVCProj(const char *lname, cmTarg } -void cmLocalVisualStudio7Generator::AddVCProjBuildRule() +void cmLocalVisualStudio7Generator::AddVCProjBuildRule(cmTarget& tgt) { - std::string dspname = *(m_CreatedProjectNames.end()-1); + std::string dspname = tgt.GetName(); dspname += ".vcproj.cmake"; const char* dsprule = m_Makefile->GetRequiredDefinition("CMAKE_COMMAND"); cmCustomCommandLine commandLine; @@ -970,15 +980,6 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout, static_cast<cmGlobalVisualStudio7Generator *> (m_GlobalGenerator)->GetConfigurations(); - // if we should add regen rule then... - const char *suppRegenRule = - m_Makefile->GetDefinition("CMAKE_SUPPRESS_REGENERATION"); - if (!cmSystemTools::IsOn(suppRegenRule) && - (strcmp(libName, CMAKE_CHECK_BUILD_SYSTEM_TARGET) != 0)) - { - this->AddVCProjBuildRule(); - } - // trace the visual studio dependencies std::string name = libName; name += ".vcproj.cmake"; diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h index 6a83e3b..2f5c323 100644 --- a/Source/cmLocalVisualStudio7Generator.h +++ b/Source/cmLocalVisualStudio7Generator.h @@ -76,7 +76,7 @@ private: void CreateSingleVCProj(const char *lname, cmTarget &tgt); void WriteVCProjFile(std::ostream& fout, const char *libName, cmTarget &tgt); - void AddVCProjBuildRule(); + void AddVCProjBuildRule(cmTarget& tgt); void WriteConfigurations(std::ostream& fout, const char *libName, cmTarget &tgt); void WriteConfiguration(std::ostream& fout, |