Browse Source

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 năm trước cách đây
mục cha
commit
8d9f39f4c3
1 tập tin đã thay đổi với 13 bổ sung1 xóa
  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())