Merge topic 'no_track_configured_files'

38571f2 cmMakefile: Do not track CMake temporary files.
This commit is contained in:
Brad King 2013-09-09 11:01:56 -04:00 committed by CMake Topic Stage
commit 1e11708a56
1 changed files with 19 additions and 9 deletions

View File

@ -819,12 +819,13 @@ bool cmMakefile::NeedBackwardsCompatibility(unsigned int major,
namespace namespace
{ {
struct file_exists struct file_not_persistent
{ {
bool operator()(const std::string& path) const bool operator()(const std::string& path) const
{ {
return cmSystemTools::FileExists(path.c_str()); return !(path.find("CMakeTmp") == path.npos &&
} cmSystemTools::FileExists(path.c_str()));
}
}; };
} }
@ -848,13 +849,22 @@ void cmMakefile::FinalPass()
//remove_if will move all items that don't have a valid file name to the //remove_if will move all items that don't have a valid file name to the
//back of the vector //back of the vector
std::vector<std::string>::iterator new_end = std::remove_if( std::vector<std::string>::iterator new_output_files_end = std::remove_if(
this->OutputFiles.begin(), this->OutputFiles.begin(),
this->OutputFiles.end(), this->OutputFiles.end(),
file_exists() ); file_not_persistent() );
//we just have to erase all items at the back //we just have to erase all items at the back
this->OutputFiles.erase(new_end, this->OutputFiles.end() ); this->OutputFiles.erase(new_output_files_end, this->OutputFiles.end() );
//if a configured file is used as input for another configured file,
//and then deleted it will show up in the input list files so we
//need to scan those too
std::vector<std::string>::iterator new_list_files_end = std::remove_if(
this->ListFiles.begin(),
this->ListFiles.end(),
file_not_persistent() );
this->ListFiles.erase(new_list_files_end, this->ListFiles.end() );
} }
// Generate the output file // Generate the output file