Fix lookup of source names after conversion to their actual case (#15259)

Since commit v3.1.0-rc1~688^2~15 (cmTarget: Add a method to obtain list of
filenames for sources, 2014-03-17) we have code paths that lookup sources by
strings containing their own full path after normalization to the actual case
on disk.  This fails in the case that a cmSourceFile has already been created
with a different case in the filename.  The comparison of the directory works
because it is always normalized.  Only the comparison of the file name fails.

Fix this by using a case-insensitive comparison of source file names on
platforms that do not have case-sensitive filesystems.
This commit is contained in:
Brad King 2014-11-26 16:14:49 -05:00
parent d2f2a2e226
commit 84d124e8f0
1 changed files with 2 additions and 1 deletions

View File

@ -216,7 +216,8 @@ bool cmSourceFileLocation::Matches(cmSourceFileLocation const& loc)
// Both extensions are similarly ambiguous. Since only the old fixed set
// of extensions will be tried, the names must match at this point to be
// the same file.
if(this->Name.size() != loc.Name.size() || this->Name != loc.Name)
if(this->Name.size() != loc.Name.size() ||
!cmSystemTools::ComparePath(this->Name, loc.Name))
{
return false;
}