Files
CMake/Source/cmObjectLocation.h
Ben Boeckel 757c40c478 cmObjectLocation: add a class to track object locations
With the feature to use a shorter path for the build tree, the install
tree may still want to use a longer path.
2025-08-07 11:24:32 -04:00

51 lines
1.1 KiB
C++

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