VS: Add custom VCEnd labels only in C# projects
In commit dff98aa9ca (VS: add missing label in C# project-build events,
2021-12-15) the condition for adding our own `VCEnd` label was based on
the project being managed or not. Since we support managed C++
projects, switch the condition to be based on whether the project is C#.
Issue: #21440
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index a9db953..fd13c0b 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -574,8 +574,7 @@
{
// If any commands were generated, finish constructing them.
if (!this->First) {
- std::string finishScript =
- this->LG->FinishConstructScript(IsManaged::No);
+ std::string finishScript = this->LG->FinishConstructScript(IsCSharp::No);
this->Stream << this->LG->EscapeForXML(finishScript) << "\"";
}
@@ -1818,7 +1817,7 @@
if (this->FortranProject) {
cmSystemTools::ReplaceString(script, "$(Configuration)", config);
}
- script += this->FinishConstructScript(IsManaged::No);
+ script += this->FinishConstructScript(IsCSharp::No);
/* clang-format off */
fout << "\t\t\t\t\t<Tool\n"
<< "\t\t\t\t\tName=\"" << customTool << "\"\n"
diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx
index f696dea..a21293b 100644
--- a/Source/cmLocalVisualStudioGenerator.cxx
+++ b/Source/cmLocalVisualStudioGenerator.cxx
@@ -245,15 +245,15 @@
}
std::string cmLocalVisualStudioGenerator::FinishConstructScript(
- IsManaged isManaged, const std::string& newline)
+ IsCSharp isCSharp, const std::string& newline)
{
bool useLocal = this->CustomCommandUseLocal();
// Store the script in a string.
std::string script;
- if (useLocal && isManaged == IsManaged::Yes) {
- // These aren't generated by default for C# projects.
+ if (useLocal && isCSharp == IsCSharp::Yes) {
+ // This label is not provided by MSBuild for C# projects.
script += newline;
script += this->GetReportErrorLabel();
}
diff --git a/Source/cmLocalVisualStudioGenerator.h b/Source/cmLocalVisualStudioGenerator.h
index 2383a5a..82a62cf 100644
--- a/Source/cmLocalVisualStudioGenerator.h
+++ b/Source/cmLocalVisualStudioGenerator.h
@@ -31,14 +31,14 @@
virtual ~cmLocalVisualStudioGenerator();
/** Construct a script from the given list of command lines. */
- enum class IsManaged
+ enum class IsCSharp
{
No,
Yes
};
std::string ConstructScript(cmCustomCommandGenerator const& ccg,
const std::string& newline = "\n");
- std::string FinishConstructScript(IsManaged isManaged,
+ std::string FinishConstructScript(IsCSharp isCSharp,
const std::string& newline = "\n");
/** Label to which to jump in a batch file after a failed step in a
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index e09ac74..9523038 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -1571,10 +1571,11 @@
}
}
}
- cmLocalVisualStudioGenerator::IsManaged isManaged = (this->Managed)
- ? cmLocalVisualStudioGenerator::IsManaged::Yes
- : cmLocalVisualStudioGenerator::IsManaged::No;
- script += lg->FinishConstructScript(isManaged);
+ cmLocalVisualStudioGenerator::IsCSharp isCSharp =
+ (this->ProjectType == VsProjectType::csproj)
+ ? cmLocalVisualStudioGenerator::IsCSharp::Yes
+ : cmLocalVisualStudioGenerator::IsCSharp::No;
+ script += lg->FinishConstructScript(isCSharp);
if (this->ProjectType == VsProjectType::csproj) {
std::string name = "CustomCommand_" + c + "_" +
cmSystemTools::ComputeStringMD5(sourcePath);
@@ -4308,10 +4309,11 @@
}
}
if (!script.empty()) {
- cmLocalVisualStudioGenerator::IsManaged isManaged = (this->Managed)
- ? cmLocalVisualStudioGenerator::IsManaged::Yes
- : cmLocalVisualStudioGenerator::IsManaged::No;
- script += lg->FinishConstructScript(isManaged);
+ cmLocalVisualStudioGenerator::IsCSharp isCSharp =
+ (this->ProjectType == VsProjectType::csproj)
+ ? cmLocalVisualStudioGenerator::IsCSharp::Yes
+ : cmLocalVisualStudioGenerator::IsCSharp::No;
+ script += lg->FinishConstructScript(isCSharp);
}
comment = cmVS10EscapeComment(comment);
if (this->ProjectType != VsProjectType::csproj) {