diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmLocalVisualStudio7Generator.cxx | 6 | ||||
-rw-r--r-- | Source/cmLocalVisualStudioGenerator.cxx | 4 | ||||
-rw-r--r-- | Source/cmLocalVisualStudioGenerator.h | 9 | ||||
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 64 |
4 files changed, 41 insertions, 42 deletions
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index fd13c0b..4bf8df6 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -40,6 +40,7 @@ #include "cmTarget.h" #include "cmTargetDepend.h" #include "cmValue.h" +#include "cmVsProjectType.h" #include "cmXMLParser.h" #include "cmake.h" @@ -574,7 +575,8 @@ public: { // If any commands were generated, finish constructing them. if (!this->First) { - std::string finishScript = this->LG->FinishConstructScript(IsCSharp::No); + std::string finishScript = + this->LG->FinishConstructScript(VsProjectType::vcxproj); this->Stream << this->LG->EscapeForXML(finishScript) << "\""; } @@ -1817,7 +1819,7 @@ void cmLocalVisualStudio7Generator::WriteCustomRule( if (this->FortranProject) { cmSystemTools::ReplaceString(script, "$(Configuration)", config); } - script += this->FinishConstructScript(IsCSharp::No); + script += this->FinishConstructScript(VsProjectType::vcxproj); /* 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 a21293b..93f01ed 100644 --- a/Source/cmLocalVisualStudioGenerator.cxx +++ b/Source/cmLocalVisualStudioGenerator.cxx @@ -245,14 +245,14 @@ std::string cmLocalVisualStudioGenerator::ConstructScript( } std::string cmLocalVisualStudioGenerator::FinishConstructScript( - IsCSharp isCSharp, const std::string& newline) + VsProjectType projectType, const std::string& newline) { bool useLocal = this->CustomCommandUseLocal(); // Store the script in a string. std::string script; - if (useLocal && isCSharp == IsCSharp::Yes) { + if (useLocal && projectType == VsProjectType::csproj) { // 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 82a62cf..cf4f4d9 100644 --- a/Source/cmLocalVisualStudioGenerator.h +++ b/Source/cmLocalVisualStudioGenerator.h @@ -10,6 +10,7 @@ #include "cmGlobalVisualStudioGenerator.h" #include "cmLocalGenerator.h" +#include "cmVsProjectType.h" class cmCustomCommand; class cmCustomCommandGenerator; @@ -30,15 +31,9 @@ public: cmLocalVisualStudioGenerator(cmGlobalGenerator* gg, cmMakefile* mf); virtual ~cmLocalVisualStudioGenerator(); - /** Construct a script from the given list of command lines. */ - enum class IsCSharp - { - No, - Yes - }; std::string ConstructScript(cmCustomCommandGenerator const& ccg, const std::string& newline = "\n"); - std::string FinishConstructScript(IsCSharp isCSharp, + std::string FinishConstructScript(VsProjectType projectType, 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 84044e4..685d34d 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -235,14 +235,27 @@ static bool cmVS10IsTargetsFile(std::string const& path) return cmSystemTools::Strucmp(ext.c_str(), ".targets") == 0; } -static std::string computeProjectFileExtension(cmGeneratorTarget const* t) +static VsProjectType computeProjectType(cmGeneratorTarget const* t) { - std::string res; - res = ".vcxproj"; if (t->IsCSharpOnly()) { - res = ".csproj"; + return VsProjectType::csproj; + } + return VsProjectType::vcxproj; +} + +static std::string computeProjectFileExtension(VsProjectType projectType) +{ + switch (projectType) { + case VsProjectType::csproj: + return ".csproj"; + default: + return ".vcxproj"; } - return res; +} + +static std::string computeProjectFileExtension(cmGeneratorTarget const* t) +{ + return computeProjectFileExtension(computeProjectType(t)); } cmVisualStudio10TargetGenerator::cmVisualStudio10TargetGenerator( @@ -339,21 +352,18 @@ std::ostream& cmVisualStudio10TargetGenerator::Elem::WriteString( void cmVisualStudio10TargetGenerator::Generate() { + this->ProjectType = computeProjectType(this->GeneratorTarget); + this->Managed = this->ProjectType == VsProjectType::csproj; const std::string ProjectFileExtension = - computeProjectFileExtension(this->GeneratorTarget); - if (ProjectFileExtension == ".vcxproj") { - this->ProjectType = VsProjectType::vcxproj; - this->Managed = false; - } else if (ProjectFileExtension == ".csproj") { - if (this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY) { - std::string message = "The C# target \"" + - this->GeneratorTarget->GetName() + - "\" is of type STATIC_LIBRARY. This is discouraged (and may be " - "disabled in future). Make it a SHARED library instead."; - this->Makefile->IssueMessage(MessageType::DEPRECATION_WARNING, message); - } - this->ProjectType = VsProjectType::csproj; - this->Managed = true; + computeProjectFileExtension(this->ProjectType); + + if (this->ProjectType == VsProjectType::csproj && + this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY) { + std::string message = "The C# target \"" + + this->GeneratorTarget->GetName() + + "\" is of type STATIC_LIBRARY. This is discouraged (and may be " + "disabled in future). Make it a SHARED library instead."; + this->Makefile->IssueMessage(MessageType::DEPRECATION_WARNING, message); } if (this->Android && @@ -406,7 +416,7 @@ void cmVisualStudio10TargetGenerator::Generate() char magic[] = { char(0xEF), char(0xBB), char(0xBF) }; BuildFileStream.write(magic, 3); - if (this->Managed && this->ProjectType == VsProjectType::csproj && + if (this->ProjectType == VsProjectType::csproj && this->GeneratorTarget->IsDotNetSdkTarget() && this->GlobalGenerator->GetVersion() >= cmGlobalVisualStudioGenerator::VS16) { @@ -832,7 +842,7 @@ void cmVisualStudio10TargetGenerator::WriteClassicMsBuildProjectFile( void cmVisualStudio10TargetGenerator::WriteSdkStyleProjectFile( cmGeneratedFileStream& BuildFileStream) { - if (!this->Managed || this->ProjectType != VsProjectType::csproj || + if (this->ProjectType != VsProjectType::csproj || !this->GeneratorTarget->IsDotNetSdkTarget()) { std::string message = "The target \"" + this->GeneratorTarget->GetName() + "\" is not eligible for .Net SDK style project."; @@ -1711,11 +1721,7 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( } } } - cmLocalVisualStudioGenerator::IsCSharp isCSharp = - (this->ProjectType == VsProjectType::csproj) - ? cmLocalVisualStudioGenerator::IsCSharp::Yes - : cmLocalVisualStudioGenerator::IsCSharp::No; - script += lg->FinishConstructScript(isCSharp); + script += lg->FinishConstructScript(this->ProjectType); if (this->ProjectType == VsProjectType::csproj) { std::string name = "CustomCommand_" + c + "_" + cmSystemTools::ComputeStringMD5(sourcePath); @@ -4449,11 +4455,7 @@ void cmVisualStudio10TargetGenerator::WriteEvent( } } if (!script.empty()) { - cmLocalVisualStudioGenerator::IsCSharp isCSharp = - (this->ProjectType == VsProjectType::csproj) - ? cmLocalVisualStudioGenerator::IsCSharp::Yes - : cmLocalVisualStudioGenerator::IsCSharp::No; - script += lg->FinishConstructScript(isCSharp); + script += lg->FinishConstructScript(this->ProjectType); } comment = cmVS10EscapeComment(comment); if (this->ProjectType != VsProjectType::csproj) { |