summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-10-06 10:47:10 (GMT)
committerKitware Robot <kwrobot@kitware.com>2020-10-06 10:47:19 (GMT)
commiteb9cf7f72181834f8d200a2a17572c6149490414 (patch)
tree86f06f46f5adba25fb5d1e940be8042c648cd000 /Source
parent848eb295de4985faaac74fccf4628ca152744f0d (diff)
parent8d87cfdbf34671ad80cf584456dfdb565007f869 (diff)
downloadCMake-eb9cf7f72181834f8d200a2a17572c6149490414.zip
CMake-eb9cf7f72181834f8d200a2a17572c6149490414.tar.gz
CMake-eb9cf7f72181834f8d200a2a17572c6149490414.tar.bz2
Merge topic 'csharp-source_group-bugfix' into release-3.18
8d87cfdbf3 VS: Fix regression in C# source links Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5314
Diffstat (limited to 'Source')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx9
1 files changed, 8 insertions, 1 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index a8e424d..f58c6fd 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -4927,6 +4927,7 @@ std::string cmVisualStudio10TargetGenerator::GetCSharpSourceLink(
// for this file exists, otherwise we check if the path relative to current
// source- or binary-dir is used within the link and return that
std::string link;
+ std::string sourceGroupedFile;
std::string const& fullFileName = source->GetFullPath();
std::string const& srcDir = this->Makefile->GetCurrentSourceDirectory();
std::string const& binDir = this->Makefile->GetCurrentBinaryDirectory();
@@ -4936,8 +4937,14 @@ std::string cmVisualStudio10TargetGenerator::GetCSharpSourceLink(
cmSourceGroup* sourceGroup =
this->Makefile->FindSourceGroup(fullFileName, sourceGroups);
if (sourceGroup && !sourceGroup->GetFullName().empty()) {
- link = sourceGroup->GetFullName() + "/" +
+ sourceGroupedFile = sourceGroup->GetFullName() + "/" +
cmsys::SystemTools::GetFilenameName(fullFileName);
+ cmsys::SystemTools::ConvertToUnixSlashes(sourceGroupedFile);
+ }
+
+ if (!sourceGroupedFile.empty() &&
+ cmHasSuffix(fullFileName, sourceGroupedFile)) {
+ link = sourceGroupedFile;
} else if (cmHasPrefix(fullFileName, srcDir)) {
link = fullFileName.substr(srcDir.length() + 1);
} else if (cmHasPrefix(fullFileName, binDir)) {