Преглед на файлове

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())