瀏覽代碼

BUG: When creating a test driver, do not remove the old file, so if nothing changes, it will not rebuild. Fixes Bug #885 - cmCreateTestSource overwrite file when running cmake

Andy Cedilnik 21 年之前
父節點
當前提交
42bc978b5b
共有 1 個文件被更改,包括 6 次插入11 次删除
  1. 6 11
      Source/cmCreateTestSourceList.cxx

+ 6 - 11
Source/cmCreateTestSourceList.cxx

@@ -81,15 +81,6 @@ bool cmCreateTestSourceList::InitialPass(std::vector<std::string> const& args)
   driver += *i;
   ++i;
 
-  std::ofstream fout(driver.c_str());
-  if (!fout)
-    {
-    std::string err = "Could not create file ";
-    err += driver;
-    err += " for cmCreateTestSourceList command.";
-    this->SetError(err.c_str());
-    return false;
-    }
   std::string configFile = 
     m_Makefile->GetDefinition("CMAKE_ROOT");
   configFile += "/Templates/TestDriver.cxx.in";
@@ -166,7 +157,11 @@ bool cmCreateTestSourceList::InitialPass(std::vector<std::string> const& args)
     }
   m_Makefile->AddDefinition("CMAKE_FORWARD_DECLARE_TESTS", forwardDeclareCode.c_str());
   m_Makefile->AddDefinition("CMAKE_FUNCTION_TABLE_ENTIRES", functionMapCode.c_str());
-  m_Makefile->ConfigureFile(configFile.c_str(), driver.c_str(), false, true, false);
+  bool res = true;
+  if ( !m_Makefile->ConfigureFile(configFile.c_str(), driver.c_str(), false, true, false) )
+    {
+    res = false;
+    }
 
   // Create the source list
   cmSourceFile cfile;
@@ -194,7 +189,7 @@ bool cmCreateTestSourceList::InitialPass(std::vector<std::string> const& args)
     }
 
   m_Makefile->AddDefinition(sourceList, sourceListValue.c_str());
-  return true;
+  return res;
 }