/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmSearchPath_h #define cmSearchPath_h #include "cmConfigure.h" #include #include #include class cmFindCommon; /** \class cmSearchPath * \brief Container for encapsulating a set of search paths * * cmSearchPath is a container that encapsulates search path construction and * management */ class cmSearchPath { public: // cmSearchPath must be initialized from a valid pointer. The only reason // for the default is to allow it to be easily used in stl containers. // Attempting to initialize with a NULL value will fail an assertion cmSearchPath(cmFindCommon* findCmd = nullptr); ~cmSearchPath(); const std::vector& GetPaths() const { return this->Paths; } void ExtractWithout(const std::set& ignore, std::vector& outPaths, bool clear = false) const; void AddPath(const std::string& path); void AddUserPath(const std::string& path); void AddCMakePath(const std::string& variable); void AddEnvPath(const std::string& variable); void AddCMakePrefixPath(const std::string& variable); void AddEnvPrefixPath(const std::string& variable, bool stripBin = false); void AddSuffixes(const std::vector& suffixes); protected: void AddPrefixPaths(const std::vector& paths, const char* base = nullptr); void AddPathInternal(const std::string& path, const char* base = nullptr); cmFindCommon* FC; std::vector Paths; }; #endif