Merge topic 'vs-old-rule-files'
fa5284f0
VS: Prevent generated "rule" files from causing rebuilds
This commit is contained in:
commit
f23ab1a150
|
@ -9,6 +9,7 @@
|
|||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the License for more information.
|
||||
============================================================================*/
|
||||
#include "windows.h"
|
||||
#include "cmVisualStudio10TargetGenerator.h"
|
||||
#include "cmGlobalVisualStudio10Generator.h"
|
||||
#include "cmGeneratorTarget.h"
|
||||
|
@ -871,6 +872,9 @@ cmVisualStudio10TargetGenerator::WriteCustomRule(cmSourceFile const* source,
|
|||
fout << "# generated from CMake\n";
|
||||
fout.flush();
|
||||
fout.close();
|
||||
// Force given file to have a very old timestamp, thus
|
||||
// preventing dependent rebuilds.
|
||||
this->ForceOld(sourcePath);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3458,3 +3462,26 @@ cmVisualStudio10TargetGenerator
|
|||
this->WriteString("<None Include=\"", 2);
|
||||
(*this->BuildFileStream) << cmVS10EscapeXML(keyFile) << "\" />\n";
|
||||
}
|
||||
|
||||
bool cmVisualStudio10TargetGenerator::ForceOld(const std::string& source) const
|
||||
{
|
||||
HANDLE h = CreateFileW(
|
||||
cmSystemTools::ConvertToWindowsExtendedPath(source).c_str(),
|
||||
FILE_WRITE_ATTRIBUTES,
|
||||
FILE_SHARE_WRITE, 0, OPEN_EXISTING,
|
||||
FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||
if (!h)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
FILETIME const ftime_20010101 = { 3365781504, 29389701 };
|
||||
if (!SetFileTime(h, &ftime_20010101, &ftime_20010101, &ftime_20010101))
|
||||
{
|
||||
CloseHandle(h);
|
||||
return false;
|
||||
}
|
||||
|
||||
CloseHandle(h);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -130,6 +130,8 @@ private:
|
|||
cmIDEFlagTable const* GetLinkFlagTable() const;
|
||||
cmIDEFlagTable const* GetMasmFlagTable() const;
|
||||
|
||||
bool ForceOld(const std::string& source) const;
|
||||
|
||||
private:
|
||||
typedef cmVisualStudioGeneratorOptions Options;
|
||||
typedef std::map<std::string, Options*> OptionsMap;
|
||||
|
|
Loading…
Reference in New Issue