| /* 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 <map> |
| #include <string> |
| #include <utility> |
| |
| #include <cm/optional> |
| #include <cm/string_view> |
| |
| 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<cmObjectLocation> ShortLoc; |
| cmObjectLocation LongLoc; |
| std::map<std::string, cmObjectLocation> 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; |
| }; |