/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2000-2009 Kitware, Inc., Insight Software Consortium Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ #ifndef cmFindBase_h #define cmFindBase_h #include "cmFindCommon.h" /** \class cmFindBase * \brief Base class for most FIND_XXX commands. * * cmFindBase is a parent class for cmFindProgramCommand, cmFindPathCommand, * and cmFindLibraryCommand, cmFindFileCommand */ class cmFindBase : public cmFindCommon { public: cmFindBase(); /** * This is called when the command is first encountered in * the CMakeLists.txt file. */ virtual bool ParseArguments(std::vector<std::string> const& args); cmTypeMacro(cmFindBase, cmFindCommon); virtual const char* GetFullDocumentation() {return this->GenericDocumentation.c_str();} protected: void PrintFindStuff(); void ExpandPaths(); void AddPathSuffixes(); // see if the VariableName is already set in the cache, // also copy the documentation from the cache to VariableDocumentation // if it has documentation in the cache bool CheckForVariableInCache(); cmStdString GenericDocumentation; // use by command during find cmStdString VariableDocumentation; cmStdString VariableName; std::vector<std::string> Names; // CMAKE_*_PATH CMAKE_SYSTEM_*_PATH FRAMEWORK|LIBRARY|INCLUDE|PROGRAM cmStdString EnvironmentPath; // LIB,INCLUDE bool AlreadyInCache; bool AlreadyInCacheWithoutMetaInfo; private: // Add pieces of the search. void AddCMakeEnvironmentPath(); void AddCMakeVariablePath(); void AddSystemEnvironmentPath(); void AddCMakeSystemVariablePath(); void AddUserHintsPath(); void AddUserGuessPath(); // Helpers. void AddCMakePrefixPath(const char* variable); void AddEnvPrefixPath(const char* variable); void AddPrefixPaths(std::vector<std::string> const& in_paths, PathType pathType); }; #endif