file(GENERATE): Only write the file if content is different.

No policy is used to control this behavior for now.
This commit is contained in:
Stephen Kelly
2014-04-25 20:11:05 +02:00
parent 3c8226e590
commit 42e1cd137c
5 changed files with 37 additions and 12 deletions

View File

@@ -13,6 +13,7 @@
#include "cmGeneratorExpressionEvaluationFile.h"
#include "cmMakefile.h"
#include "cmGeneratedFileStream.h"
#include <cmsys/FStream.hxx>
#include <assert.h>
@@ -79,19 +80,9 @@ void cmGeneratorExpressionEvaluationFile::Generate(const std::string& config,
this->Files.push_back(outputFileName);
outputFiles[outputFileName] = outputContent;
cmsys::ofstream fout(outputFileName.c_str());
if(!fout)
{
cmOStringStream e;
e << "Evaluation file \"" << outputFileName << "\" cannot be written.";
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
return;
}
cmGeneratedFileStream fout(outputFileName.c_str());
fout.SetCopyIfDifferent(true);
fout << outputContent;
fout.close();
}
//----------------------------------------------------------------------------