1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00
Files
CMake/Source/cmGenExContext.cxx
Brad King deb7b4b658 file(GENERATE): Record CMP0189 at each call site
Policy CMP0189, introduced by commit b3da9c6d60 (GenEx: Evaluate
LINK_LIBRARIES target properties transitively, 2025-02-24,
v4.1.0-rc1~731^2), takes effect at generation time, and so uses the
policy value as of the end of each directory.  However, some projects
may rely on `file(GENERATE)` with the policy's OLD behavior in order
to extract targets' *direct* dependencies from `LINK_LIBRARIES`.
Pending a first-class solution to that problem, make it easier for
projects to port to the policy's NEW behavior in general while
retaining the OLD behavior in an isolated context.

Fixes: #27220
2025-09-23 11:30:22 -04:00

38 lines
768 B
C++

/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file LICENSE.rst or https://cmake.org/licensing for details. */
#include "cmGenExContext.h"
#include <utility>
#include <cm/optional>
#include "cmLocalGenerator.h"
#include "cmPolicies.h"
namespace cm {
namespace GenEx {
Context::Context(cmLocalGenerator const* lg, std::string config,
std::string language)
: LG(lg)
, Config(std::move(config))
, Language(std::move(language))
{
}
void Context::SetCMP0189(cmPolicies::PolicyStatus cmp0189)
{
this->CMP0189 = cmp0189;
}
cmPolicies::PolicyStatus Context::GetCMP0189() const
{
if (this->CMP0189.has_value()) {
return *this->CMP0189;
}
return this->LG->GetPolicyStatus(cmPolicies::CMP0189);
}
}
}