You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#include "cmSetDirectoryPropertiesCommand.h"
|
|
|
|
#include "cmExecutionStatus.h"
|
|
#include "cmMakefile.h"
|
|
|
|
// cmSetDirectoryPropertiesCommand
|
|
bool cmSetDirectoryPropertiesCommand(std::vector<std::string> const& args,
|
|
cmExecutionStatus& status)
|
|
{
|
|
if (args.empty()) {
|
|
status.SetError("called with incorrect number of arguments");
|
|
return false;
|
|
}
|
|
|
|
// PROPERTIES followed by prop value pairs
|
|
if (args.size() % 2 != 1) {
|
|
status.SetError("Wrong number of arguments");
|
|
return false;
|
|
}
|
|
|
|
for (auto iter = args.begin() + 1; iter != args.end(); iter += 2) {
|
|
const std::string& prop = *iter;
|
|
if (prop == "VARIABLES") {
|
|
status.SetError(
|
|
"Variables and cache variables should be set using SET command");
|
|
return false;
|
|
}
|
|
if (prop == "MACROS") {
|
|
status.SetError(
|
|
"Commands and macros cannot be set using SET_CMAKE_PROPERTIES");
|
|
return false;
|
|
}
|
|
status.GetMakefile().SetProperty(prop, *(iter + 1));
|
|
}
|
|
|
|
return true;
|
|
}
|