1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 19:08:07 +08:00

Genex: Evaluate byproduct generator expressions in cmCustomCommandGenerator

Evaluate and expand generator expressions in byproducts of custom commands.

Note that it is still not possible to use generator expressions in byproducts
of the commands `add_custom_command` and `add_custom_target`.  These commands
still reject the input.  This is a preparation step for OUTPUT generator
expression support.

Issue: #12877
This commit is contained in:
Daniel Eiband
2019-09-11 18:18:47 +02:00
parent ccc9685cc1
commit a583b7bc17
3 changed files with 6 additions and 2 deletions

View File

@@ -72,6 +72,8 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const& cc,
this->CommandLines.push_back(std::move(argv));
}
AppendPaths(cc.GetByproducts(), *this->GE, this->LG, this->Config,
this->Byproducts);
AppendPaths(cc.GetDepends(), *this->GE, this->LG, this->Config,
this->Depends);
@@ -248,7 +250,7 @@ std::vector<std::string> const& cmCustomCommandGenerator::GetOutputs() const
std::vector<std::string> const& cmCustomCommandGenerator::GetByproducts() const
{
return this->CC.GetByproducts();
return this->Byproducts;
}
std::vector<std::string> const& cmCustomCommandGenerator::GetDepends() const

View File

@@ -23,6 +23,7 @@ class cmCustomCommandGenerator
cmGeneratorExpression* GE;
cmCustomCommandLines CommandLines;
std::vector<std::vector<std::string>> EmulatorsWithArguments;
std::vector<std::string> Byproducts;
std::vector<std::string> Depends;
std::string WorkingDirectory;

View File

@@ -221,7 +221,8 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
this->GeneratorTarget->GetPostBuildCommands());
for (const auto& be : buildEventCommands) {
const std::vector<std::string>& byproducts = be.GetByproducts();
cmCustomCommandGenerator beg(be, this->ConfigName, this->LocalGenerator);
const std::vector<std::string>& byproducts = beg.GetByproducts();
for (std::string const& byproduct : byproducts) {
this->CleanFiles.insert(
this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir,