diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index 0135db49ce..7ac06d88de 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -359,9 +359,25 @@ void cmCoreTryCompile::CleanupFiles(const char* binDir) { if(!cmSystemTools::RemoveFile(fullPath.c_str())) { - std::string m = "Remove failed on file: "; - m += fullPath; - cmSystemTools::ReportLastSystemError(m.c_str()); + bool removed = false; + int numAttempts = 0; + // sometimes anti-virus software hangs on to + // new files and we can not delete them, so try + // 5 times with .5 second delay between tries. + while(!removed && numAttempts < 5) + { + cmSystemTools::Delay(500); + if(cmSystemTools::RemoveFile(fullPath.c_str())) + { + removed = true; + } + } + if(!removed) + { + std::string m = "Remove failed on file: "; + m += fullPath; + cmSystemTools::ReportLastSystemError(m.c_str()); + } } } }