diff --git a/Source/cmOrderDirectories.cxx b/Source/cmOrderDirectories.cxx
index d93debe499eb5e31bc1eff0b2e6c1af516232c58..d48eb53a3fe5ee067a87a07742b1d0673d8db1ee 100644
--- a/Source/cmOrderDirectories.cxx
+++ b/Source/cmOrderDirectories.cxx
@@ -345,12 +345,17 @@ void cmOrderDirectories::AddLanguageDirectories(
 void cmOrderDirectories::SetImplicitDirectories(
   std::set<std::string> const& implicitDirs)
 {
-  this->ImplicitDirectories = implicitDirs;
+  this->ImplicitDirectories.clear();
+  for (std::set<std::string>::const_iterator i = implicitDirs.begin();
+       i != implicitDirs.end(); ++i) {
+    this->ImplicitDirectories.insert(this->GetRealPath(*i));
+  }
 }
 
 bool cmOrderDirectories::IsImplicitDirectory(std::string const& dir)
 {
-  return this->ImplicitDirectories.find(dir) !=
+  std::string const& real = this->GetRealPath(dir);
+  return this->ImplicitDirectories.find(real) !=
     this->ImplicitDirectories.end();
 }