mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-17 15:32:10 +08:00
cmCommand refactor: cmVariableRequiresCommand
This commit is contained in:
@@ -326,8 +326,7 @@ void GetProjectCommands(cmState* state)
|
|||||||
"utility_source", cmUtilitySourceCommand, cmPolicies::CMP0034,
|
"utility_source", cmUtilitySourceCommand, cmPolicies::CMP0034,
|
||||||
"The utility_source command should not be called; see CMP0034.");
|
"The utility_source command should not be called; see CMP0034.");
|
||||||
state->AddDisallowedCommand(
|
state->AddDisallowedCommand(
|
||||||
"variable_requires", cm::make_unique<cmVariableRequiresCommand>(),
|
"variable_requires", cmVariableRequiresCommand, cmPolicies::CMP0035,
|
||||||
cmPolicies::CMP0035,
|
|
||||||
"The variable_requires command should not be called; see CMP0035.");
|
"The variable_requires command should not be called; see CMP0035.");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@@ -2,33 +2,32 @@
|
|||||||
file Copyright.txt or https://cmake.org/licensing for details. */
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
||||||
#include "cmVariableRequiresCommand.h"
|
#include "cmVariableRequiresCommand.h"
|
||||||
|
|
||||||
|
#include "cmExecutionStatus.h"
|
||||||
#include "cmMakefile.h"
|
#include "cmMakefile.h"
|
||||||
#include "cmState.h"
|
#include "cmState.h"
|
||||||
#include "cmStringAlgorithms.h"
|
#include "cmStringAlgorithms.h"
|
||||||
#include "cmSystemTools.h"
|
#include "cmSystemTools.h"
|
||||||
|
|
||||||
class cmExecutionStatus;
|
|
||||||
|
|
||||||
// cmLibraryCommand
|
// cmLibraryCommand
|
||||||
bool cmVariableRequiresCommand::InitialPass(
|
bool cmVariableRequiresCommand(std::vector<std::string> const& args,
|
||||||
std::vector<std::string> const& args, cmExecutionStatus&)
|
cmExecutionStatus& status)
|
||||||
{
|
{
|
||||||
if (args.size() < 3) {
|
if (args.size() < 3) {
|
||||||
this->SetError("called with incorrect number of arguments");
|
status.SetError("called with incorrect number of arguments");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string const& testVariable = args[0];
|
std::string const& testVariable = args[0];
|
||||||
if (!this->Makefile->IsOn(testVariable)) {
|
if (!status.GetMakefile().IsOn(testVariable)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
std::string const& resultVariable = args[1];
|
std::string const& resultVariable = args[1];
|
||||||
bool requirementsMet = true;
|
bool requirementsMet = true;
|
||||||
std::string notSet;
|
std::string notSet;
|
||||||
bool hasAdvanced = false;
|
bool hasAdvanced = false;
|
||||||
cmState* state = this->Makefile->GetState();
|
cmState* state = status.GetMakefile().GetState();
|
||||||
for (unsigned int i = 2; i < args.size(); ++i) {
|
for (unsigned int i = 2; i < args.size(); ++i) {
|
||||||
if (!this->Makefile->IsOn(args[i])) {
|
if (!status.GetMakefile().IsOn(args[i])) {
|
||||||
requirementsMet = false;
|
requirementsMet = false;
|
||||||
notSet += args[i];
|
notSet += args[i];
|
||||||
notSet += "\n";
|
notSet += "\n";
|
||||||
@@ -38,12 +37,12 @@ bool cmVariableRequiresCommand::InitialPass(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const char* reqVar = this->Makefile->GetDefinition(resultVariable);
|
const char* reqVar = status.GetMakefile().GetDefinition(resultVariable);
|
||||||
// if reqVar is unset, then set it to requirementsMet
|
// if reqVar is unset, then set it to requirementsMet
|
||||||
// if reqVar is set to true, but requirementsMet is false , then
|
// if reqVar is set to true, but requirementsMet is false , then
|
||||||
// set reqVar to false.
|
// set reqVar to false.
|
||||||
if (!reqVar || (!requirementsMet && this->Makefile->IsOn(reqVar))) {
|
if (!reqVar || (!requirementsMet && status.GetMakefile().IsOn(reqVar))) {
|
||||||
this->Makefile->AddDefinitionBool(resultVariable, requirementsMet);
|
status.GetMakefile().AddDefinitionBool(resultVariable, requirementsMet);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!requirementsMet) {
|
if (!requirementsMet) {
|
||||||
|
@@ -8,21 +8,9 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "cm_memory.hxx"
|
|
||||||
|
|
||||||
#include "cmCommand.h"
|
|
||||||
|
|
||||||
class cmExecutionStatus;
|
class cmExecutionStatus;
|
||||||
|
|
||||||
class cmVariableRequiresCommand : public cmCommand
|
bool cmVariableRequiresCommand(std::vector<std::string> const& args,
|
||||||
{
|
cmExecutionStatus& status);
|
||||||
public:
|
|
||||||
std::unique_ptr<cmCommand> Clone() override
|
|
||||||
{
|
|
||||||
return cm::make_unique<cmVariableRequiresCommand>();
|
|
||||||
}
|
|
||||||
bool InitialPass(std::vector<std::string> const& args,
|
|
||||||
cmExecutionStatus& status) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user