/*========================================================================= Program: Insight Segmentation & Registration Toolkit Module: $RCSfile$ Language: C++ Date: $Date$ Version: $Revision$ Copyright (c) 2002 Insight Consortium. All rights reserved. See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "cmInstallFilesCommand.h" #include "cmCacheManager.h" // cmExecutableCommand bool cmInstallFilesCommand::InitialPass(std::vector const& argsIn) { if(argsIn.size() < 2) { this->SetError("called with incorrect number of arguments"); return false; } std::vector args; m_Makefile->ExpandSourceListArguments(argsIn, args, 2); // 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::const_iterator s = args.begin(); for (++s;s != args.end(); ++s) { m_FinalArgs.push_back(*s); } return true; } void cmInstallFilesCommand::FinalPass() { std::string testf; std::string ext = m_FinalArgs[0]; std::vector& targetSourceLists = m_Makefile->GetTargets()[m_TargetName].GetSourceLists(); // two different options if (m_FinalArgs.size() > 1) { // now put the files into the list std::vector::iterator s = m_FinalArgs.begin(); ++s; // for each argument, get the files for (;s != m_FinalArgs.end(); ++s) { // replace any variables std::string temps = *s; if (cmSystemTools::GetFilenamePath(temps).size() > 0) { testf = cmSystemTools::GetFilenamePath(temps) + "/" + cmSystemTools::GetFilenameWithoutLastExtension(temps) + ext; } else { testf = cmSystemTools::GetFilenameWithoutLastExtension(temps) + ext; } // add to the result targetSourceLists.push_back(testf); } } else // reg exp list { std::vector files; std::string regex = m_FinalArgs[0].c_str(); cmSystemTools::Glob(m_Makefile->GetCurrentDirectory(), regex.c_str(), files); std::vector::iterator s = files.begin(); // for each argument, get the files for (;s != files.end(); ++s) { targetSourceLists.push_back(*s); } } }