mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-22 06:59:01 -06:00
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
This commit is contained in:
committed by
Brad King
parent
b86c6977b1
commit
aca153b104
@@ -574,8 +574,7 @@ public:
|
||||
{
|
||||
// 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 @@ void cmLocalVisualStudio7Generator::WriteCustomRule(
|
||||
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"
|
||||
|
||||
@@ -245,15 +245,15 @@ std::string cmLocalVisualStudioGenerator::ConstructScript(
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -31,14 +31,14 @@ public:
|
||||
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
|
||||
|
||||
@@ -1571,10 +1571,11 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule(
|
||||
}
|
||||
}
|
||||
}
|
||||
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 @@ void cmVisualStudio10TargetGenerator::WriteEvent(
|
||||
}
|
||||
}
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user