blob: 2cf2564635c0436a6ebb722c1aa615dba0011bd7 [file] [log] [blame]
/* 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 <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;
enum class UseShortPath
{
Yes,
No,
};
cmObjectLocation const& GetLocation(UseShortPath use) const;
std::string const& GetPath(UseShortPath use) const;
};