diff --git a/Source/cmInstallFilesCommand.cxx b/Source/cmInstallFilesCommand.cxx index 8a0e132d9..b4cf57a4c 100644 --- a/Source/cmInstallFilesCommand.cxx +++ b/Source/cmInstallFilesCommand.cxx @@ -50,14 +50,16 @@ bool cmInstallFilesCommand::InitialPass(std::vector& args) return false; } - cmTargets &tgts = m_Makefile->GetTargets(); + // Create an INSTALL_FILES target specifically for this path. + m_TargetName = "INSTALL_FILES_"+args[0]; + cmTarget target; + target.SetInAll(false); + target.SetType(cmTarget::INSTALL_FILES); + target.SetInstallPath(args[0].c_str()); + m_Makefile->GetTargets().insert(cmTargets::value_type(m_TargetName, target)); + std::vector::iterator s = args.begin(); - if (tgts.find("INSTALL_FILES") != tgts.end()) - { - tgts["INSTALL_FILES"].SetInstallPath(args[0].c_str()); - } - ++s; - for (;s != args.end(); ++s) + for (++s;s != args.end(); ++s) { m_FinalArgs.push_back(*s); } @@ -67,14 +69,10 @@ bool cmInstallFilesCommand::InitialPass(std::vector& args) void cmInstallFilesCommand::FinalPass() { - cmTargets &tgts = m_Makefile->GetTargets(); std::string testf; std::string ext = m_FinalArgs[0]; - - if (tgts.find("INSTALL_FILES") == tgts.end()) - { - return; - } + std::vector& targetSourceLists = + m_Makefile->GetTargets()[m_TargetName].GetSourceLists(); // two different options if (m_FinalArgs.size() > 1) @@ -98,7 +96,7 @@ void cmInstallFilesCommand::FinalPass() { testf = c->GetSourceName() + ext; // add to the result - tgts["INSTALL_FILES"].GetSourceLists().push_back(testf); + targetSourceLists.push_back(testf); } } // if one wasn't found then assume it is a single class @@ -106,7 +104,7 @@ void cmInstallFilesCommand::FinalPass() { testf = temps + ext; // add to the result - tgts["INSTALL_FILES"].GetSourceLists().push_back(testf); + targetSourceLists.push_back(testf); } } } @@ -122,7 +120,7 @@ void cmInstallFilesCommand::FinalPass() // for each argument, get the files for (;s != files.end(); ++s) { - tgts["INSTALL_FILES"].GetSourceLists().push_back(*s); + targetSourceLists.push_back(*s); } } } diff --git a/Source/cmInstallFilesCommand.h b/Source/cmInstallFilesCommand.h index 0f86d88d2..070f70328 100644 --- a/Source/cmInstallFilesCommand.h +++ b/Source/cmInstallFilesCommand.h @@ -102,6 +102,7 @@ public: cmTypeMacro(cmInstallFilesCommand, cmCommand); private: + std::string m_TargetName; std::vector m_FinalArgs; }; diff --git a/Source/cmInstallProgramsCommand.cxx b/Source/cmInstallProgramsCommand.cxx index e8fac318f..657691b0d 100644 --- a/Source/cmInstallProgramsCommand.cxx +++ b/Source/cmInstallProgramsCommand.cxx @@ -50,29 +50,27 @@ bool cmInstallProgramsCommand::InitialPass(std::vector& args) return false; } - cmTargets &tgts = m_Makefile->GetTargets(); + // Create an INSTALL_PROGRAMS target specifically for this path. + m_TargetName = "INSTALL_PROGRAMS_"+args[0]; + cmTarget target; + target.SetInAll(false); + target.SetType(cmTarget::INSTALL_PROGRAMS); + target.SetInstallPath(args[0].c_str()); + m_Makefile->GetTargets().insert(cmTargets::value_type(m_TargetName, target)); + std::vector::iterator s = args.begin(); - if (tgts.find("INSTALL_PROGRAMS") != tgts.end()) - { - tgts["INSTALL_PROGRAMS"].SetInstallPath(args[0].c_str()); - } - ++s; - for (;s != args.end(); ++s) + for (++s;s != args.end(); ++s) { m_FinalArgs.push_back(*s); - } + } return true; } void cmInstallProgramsCommand::FinalPass() { - cmTargets &tgts = m_Makefile->GetTargets(); - - if (tgts.find("INSTALL_PROGRAMS") == tgts.end()) - { - return; - } + std::vector& targetSourceLists = + m_Makefile->GetTargets()[m_TargetName].GetSourceLists(); // two different options if (m_FinalArgs.size() > 1) @@ -85,7 +83,7 @@ void cmInstallProgramsCommand::FinalPass() std::string temps = *s; m_Makefile->ExpandVariablesInString(temps); // add to the result - tgts["INSTALL_PROGRAMS"].GetSourceLists().push_back(temps); + targetSourceLists.push_back(temps); } } else // reg exp list @@ -98,7 +96,7 @@ void cmInstallProgramsCommand::FinalPass() // for each argument, get the programs for (;s != programs.end(); ++s) { - tgts["INSTALL_PROGRAMS"].GetSourceLists().push_back(*s); + targetSourceLists.push_back(*s); } } } diff --git a/Source/cmInstallProgramsCommand.h b/Source/cmInstallProgramsCommand.h index 4c5c37078..307bfb985 100644 --- a/Source/cmInstallProgramsCommand.h +++ b/Source/cmInstallProgramsCommand.h @@ -102,6 +102,7 @@ public: cmTypeMacro(cmInstallProgramsCommand, cmCommand); private: + std::string m_TargetName; std::vector m_FinalArgs; }; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 804498e38..9a482bd9e 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -122,13 +122,6 @@ void cmMakefile::AddDefaultCommands() #if defined(__APPLE__) this->AddDefinition("APPLE", "1"); #endif - // always creat an empty install targets for files and programs. - cmTarget target; - target.SetInAll(false); - target.SetType(cmTarget::INSTALL_FILES); - m_Targets.insert(cmTargets::value_type("INSTALL_FILES", target)); - target.SetType(cmTarget::INSTALL_PROGRAMS); - m_Targets.insert(cmTargets::value_type("INSTALL_PROGRAMS", target)); } cmMakefile::~cmMakefile()