فهرست منبع

include: Ask for permission, rather than forgiveness.

Check that a non-optional file exists before attempting to include
it.  This makes more sense than relying on an error case deeper
within cmListFileCache.
Stephen Kelly 10 سال پیش
والد
کامیت
8d9f39f4c3
1فایلهای تغییر یافته به همراه13 افزوده شده و 1 حذف شده
  1. 13 1
      Source/cmIncludeCommand.cxx

+ 13 - 1
Source/cmIncludeCommand.cxx

@@ -130,8 +130,20 @@ bool cmIncludeCommand
     gg->GenerateImportFile(fname_abs);
     }
 
+  std::string listFile =
+    cmSystemTools::CollapseFullPath(fname.c_str(),
+                                  this->Makefile->GetCurrentSourceDirectory());
+  if(optional && !cmSystemTools::FileExists(listFile.c_str()))
+    {
+    if (!resultVarName.empty())
+      {
+      this->Makefile->AddDefinition(resultVarName, "NOTFOUND");
+      }
+    return true;
+    }
+
   bool readit =
-    this->Makefile->ReadDependentFile(fname.c_str(), noPolicyScope);
+    this->Makefile->ReadDependentFile(listFile.c_str(), noPolicyScope);
 
   // add the location of the included file if a result variable was given
   if (!resultVarName.empty())