Xcode: Add "outputPaths" to custom command script build phase

This is needed for Xcode 9's "New Build System", whose release notes
mention "that output must be declared as an explicit output by the
script which generates it" in reference to outputs of custom script
build phases.
This commit is contained in:
Harry Mallon
2017-07-13 15:46:52 +01:00
committed by Brad King
parent 25b72e9097
commit 0348383b8c
2 changed files with 13 additions and 0 deletions

View File

@@ -34,6 +34,8 @@ Generators
This is an experimental feature and can be activated by setting the
:variable:`CMAKE_XCODE_GENERATE_SCHEME` variable to a ``TRUE`` value.
* The :generator:`Xcode` generator now supports Xcode 9.
Commands
--------

View File

@@ -1517,6 +1517,17 @@ void cmGlobalXCodeGenerator::AddCommandsToBuildPhase(
makecmd += " all";
buildphase->AddAttribute("shellScript", this->CreateString(makecmd));
buildphase->AddAttribute("showEnvVarsInLog", this->CreateString("0"));
cmXCodeObject* outputFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST);
for (std::vector<cmCustomCommand>::const_iterator i = commands.begin();
i != commands.end(); ++i) {
std::vector<std::string> const& outputs = i->GetOutputs();
for (std::vector<std::string>::const_iterator j = outputs.begin();
j != outputs.end(); ++j) {
outputFiles->AddObject(this->CreateString(*j));
}
}
buildphase->AddAttribute("outputPaths", outputFiles);
}
void cmGlobalXCodeGenerator::CreateCustomRulesMakefile(