/*========================================================================= Program: Insight Segmentation & Registration Toolkit Module: $RCSfile$ Language: C++ Date: $Date$ Version: $Revision$ Copyright (c) 2000 National Library of Medicine All rights reserved. See COPYRIGHT.txt for copyright details. =========================================================================*/ #include "cmFindLibraryCommand.h" #include "cmCacheManager.h" // cmFindLibraryCommand bool cmFindLibraryCommand::Invoke(std::vector& args) { if(args.size() < 2 ) { this->SetError("called with incorrect number of arguments"); return false; } // Now check and see if the value has been stored in the cache // already, if so use that value and don't look for the program const char* cacheValue = cmCacheManager::GetInstance()->GetCacheValue(args[0].c_str()); if(cacheValue) { m_Makefile->AddDefinition(args[0].c_str(), cacheValue); return true; } std::vector path; // add any user specified paths for (unsigned int j = 2; j < args.size(); j++) { // expand variables std::string exp = args[j]; m_Makefile->ExpandVariablesInString(exp); path.push_back(exp); } // add the standard path cmSystemTools::GetPath(path); for(unsigned int k=0; k < path.size(); k++) { std::string tryPath = path[k]; tryPath += "/"; tryPath += args[1]; if(cmSystemTools::FileExists(tryPath.c_str())) { m_Makefile->AddDefinition(args[0].c_str(), path[k].c_str()); cmCacheManager::GetInstance()->AddCacheEntry(args[0].c_str(), path[k].c_str(), cmCacheManager::PATH); return true; } } return false; }