Merge topic 'vs-16.4-custom-commands'

0578239d3a VS: Tell VS 16.4 not to verify SYMBOLIC custom command outputs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3860
This commit is contained in:
Brad King 2019-09-25 16:38:58 +00:00 committed by Kitware Robot
commit 76ae4c5839
2 changed files with 17 additions and 3 deletions

View File

@ -1466,6 +1466,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule(
}
// output files for custom command
std::stringstream outputs;
bool symbolic = false;
{
const char* sep = "";
for (std::string const& o : ccg.GetOutputs()) {
@ -1473,6 +1474,12 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule(
ConvertToWindowsSlash(out);
outputs << sep << out;
sep = ";";
if (!symbolic) {
if (cmSourceFile* sf = this->Makefile->GetSource(
o, cmSourceFileLocationKind::Known)) {
symbolic = sf->GetPropertyAsBool("SYMBOLIC");
}
}
}
}
if (this->ProjectType == csproj) {
@ -1482,7 +1489,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule(
outputs.str(), comment);
} else {
this->WriteCustomRuleCpp(*spe2, c, script, additional_inputs.str(),
outputs.str(), comment);
outputs.str(), comment, symbolic);
}
}
}
@ -1490,7 +1497,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule(
void cmVisualStudio10TargetGenerator::WriteCustomRuleCpp(
Elem& e2, std::string const& config, std::string const& script,
std::string const& additional_inputs, std::string const& outputs,
std::string const& comment)
std::string const& comment, bool symbolic)
{
const std::string cond = this->CalcCondition(config);
e2.WritePlatformConfigTag("Message", cond, comment);
@ -1502,6 +1509,13 @@ void cmVisualStudio10TargetGenerator::WriteCustomRuleCpp(
// VS >= 11 let us turn off linking of custom command outputs.
e2.WritePlatformConfigTag("LinkObjects", cond, "false");
}
if (symbolic &&
this->LocalGenerator->GetVersion() >=
cmGlobalVisualStudioGenerator::VS16) {
// VS >= 16.4 warn if outputs are not created, but one of our
// outputs is marked SYMBOLIC and not expected to be created.
e2.WritePlatformConfigTag("VerifyInputsAndOutputsExist", cond, "false");
}
}
void cmVisualStudio10TargetGenerator::WriteCustomRuleCSharp(

View File

@ -142,7 +142,7 @@ private:
std::string const& script,
std::string const& additional_inputs,
std::string const& outputs,
std::string const& comment);
std::string const& comment, bool symbolic);
void WriteCustomRuleCSharp(Elem& e0, std::string const& config,
std::string const& commandName,
std::string const& script,