| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /* 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;
- };
|