Ninja: Remove CMake includes from explicit depends (#14972)

It may happen that CMake include is an explicit dependency for some command,
while all CMake includes are set phony in WriteTargetRebuildManifest, this may
lead to duplicate phony generate rules which causes ninja warnings.

We need to remove implicit CMake includes in WriteUnknownExplicitDependencies.

This fixes FindCUDA ninja warnings.
This commit is contained in:
Adam Strzelecki 2014-06-13 12:11:06 +02:00 committed by Brad King
parent 55d6aa36a5
commit 04377f1b31
1 changed files with 9 additions and 0 deletions

View File

@ -972,7 +972,16 @@ void cmGlobalNinjaGenerator::WriteUnknownExplicitDependencies(std::ostream& os)
{ {
knownDependencies.insert( ng->ConvertToNinjaPath( j->c_str() ) ); knownDependencies.insert( ng->ConvertToNinjaPath( j->c_str() ) );
} }
//get list files which are implicit dependencies as well and will be phony
//for rebuild manifest
std::vector<std::string> const& lf = (*i)->GetMakefile()->GetListFiles();
typedef std::vector<std::string>::const_iterator vect_it;
for(vect_it j = lf.begin(); j != lf.end(); ++j)
{
knownDependencies.insert( ng->ConvertToNinjaPath( j->c_str() ) );
}
} }
knownDependencies.insert( "CMakeCache.txt" );
for(std::vector<cmGeneratorExpressionEvaluationFile*>::const_iterator for(std::vector<cmGeneratorExpressionEvaluationFile*>::const_iterator
li = this->EvaluationFiles.begin(); li = this->EvaluationFiles.begin();