summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2006-02-09 23:42:58 (GMT)
committerBrad King <brad.king@kitware.com>2006-02-09 23:42:58 (GMT)
commit1b5e3f41369e8bf6a43c79eb62a4d636caab2b5a (patch)
tree5bd3900375b7cfb39e6fd067be5dfb819caaa387
parente666b8e825a59d2adf95eaabfa6685fe28c21067 (diff)
downloadCMake-1b5e3f41369e8bf6a43c79eb62a4d636caab2b5a.zip
CMake-1b5e3f41369e8bf6a43c79eb62a4d636caab2b5a.tar.gz
CMake-1b5e3f41369e8bf6a43c79eb62a4d636caab2b5a.tar.bz2
BUG: Fixed generation of cmake re-run rules.
-rw-r--r--Source/cmLocalVisualStudio6Generator.cxx21
-rw-r--r--Source/cmLocalVisualStudio6Generator.h2
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx23
-rw-r--r--Source/cmLocalVisualStudio7Generator.h2
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,