/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include #include struct cmObjectLocation { public: cmObjectLocation() = default; cmObjectLocation(std::string path) : Path(std::move(path)) { } void Update(std::string path); // Get the path to the object under the common directory for the target's // objects. std::string const& GetPath() const; // Get the directory of the object file under the common directory. cm::string_view GetDirectory() const; // Get the name of the object file. cm::string_view GetName() const; private: std::string Path; }; struct cmObjectLocations { cmObjectLocations() = default; cm::optional ShortLoc; cmObjectLocation LongLoc; std::map InstallLongLoc; enum class UseShortPath { Yes, No, }; cmObjectLocation const& GetLocation(UseShortPath use) const; std::string const& GetPath(UseShortPath use) const; cmObjectLocation const& GetInstallLocation(UseShortPath use, std::string const& config) const; std::string const& GetInstallPath(UseShortPath use, std::string const& config) const; };