summaryrefslogtreecommitdiffstats
path: root/Source/cmVisualStudio10TargetGenerator.cxx
diff options
context:
space:
mode:
authorSumit Bhardwaj <bhardwajs@outlook.com>2021-12-23 23:53:04 (GMT)
committerSumit Bhardwaj <bhardwajs@outlook.com>2021-12-23 23:53:04 (GMT)
commit3b7520b94db1cae997b4b2302bdae1bed821b811 (patch)
tree24dd535792ae87fbd6e997f0d089bd35a5866764 /Source/cmVisualStudio10TargetGenerator.cxx
parent938a53f4f15de2cc9075d5c5929de0012060cf43 (diff)
downloadCMake-3b7520b94db1cae997b4b2302bdae1bed821b811.zip
CMake-3b7520b94db1cae997b4b2302bdae1bed821b811.tar.gz
CMake-3b7520b94db1cae997b4b2302bdae1bed821b811.tar.bz2
Consolidate usage of VsProjectType
Move ProjectFileExtension handling logic to use ProjectType and remove extraneous checks in .Net SDK style project generation. This change will make introducing new project types relatively simpler.
Diffstat (limited to 'Source/cmVisualStudio10TargetGenerator.cxx')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx64
1 files changed, 33 insertions, 31 deletions
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) {