diff options
author | Daniel Scharrer <daniel@constexpr.org> | 2019-06-22 20:22:39 (GMT) |
---|---|---|
committer | Daniel Scharrer <daniel@constexpr.org> | 2019-06-22 21:09:17 (GMT) |
commit | d88b38d05d5bc7528667ed4f86842ab8f7ff2ba2 (patch) | |
tree | c6b3570f0c65baa353128d896a4210ab274dda3b /Source/cmLocalGenerator.cxx | |
parent | f2bce265b7dd64f5c7ae7f62a962ceea367bd0f6 (diff) | |
download | CMake-d88b38d05d5bc7528667ed4f86842ab8f7ff2ba2.zip CMake-d88b38d05d5bc7528667ed4f86842ab8f7ff2ba2.tar.gz CMake-d88b38d05d5bc7528667ed4f86842ab8f7ff2ba2.tar.bz2 |
Normalize paths when checking for implicit include dirs
GCC replaces implicit include directories with user-supplied ones if
they point to the same directory, even if the path strings differ.
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r-- | Source/cmLocalGenerator.cxx | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 3abf2dd..801f0e8 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1017,7 +1017,7 @@ std::vector<BT<std::string>> cmLocalGenerator::GetIncludeDirectoriesImplicit( } for (std::string const& i : impDirVec) { - if (implicitSet.insert(i).second) { + if (implicitSet.insert(cmSystemTools::GetRealPath(i)).second) { implicitDirs.emplace_back(i); } } @@ -1028,7 +1028,8 @@ std::vector<BT<std::string>> cmLocalGenerator::GetIncludeDirectoriesImplicit( &lang](std::string const& dir) { return ( // Do not exclude directories that are not in an excluded set. - ((implicitSet.find(dir) == implicitSet.end()) && + ((implicitSet.find(cmSystemTools::GetRealPath(dir)) == + implicitSet.end()) && (implicitExclude.find(dir) == implicitExclude.end())) // Do not exclude entries of the CPATH environment variable even though // they are implicitly searched by the compiler. They are meant to be @@ -1082,7 +1083,8 @@ std::vector<BT<std::string>> cmLocalGenerator::GetIncludeDirectoriesImplicit( if (!stripImplicitDirs) { // Append implicit directories that were requested by the user only for (BT<std::string> const& udr : userDirs) { - if (implicitSet.find(udr.Value) != implicitSet.end()) { + if (implicitSet.find(cmSystemTools::GetRealPath(udr.Value)) != + implicitSet.end()) { emitBT(udr); } } |