1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00
Files
CMake/Source/cmObjectLocation.h
Ben Boeckel 168e55be41 cmObjectLocation: support install-specific object locations
This will be used to implement custom install object paths. These can
support per-configuration values much more easily as it is
generator-agnostic.
2025-09-09 09:58:07 -04:00

58 lines
1.4 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 <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;
};