From 21b0654ace2ce58d191c2e42a8583b05614cd037 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Wed, 18 Feb 2015 23:29:18 +0100 Subject: [PATCH] cmGlobalGenerator: Convert set insert algorithm to vector algorithms. Adjust test for new error output. --- Source/cmGlobalGenerator.cxx | 26 ++++++++++++------- .../File_Generate/CommandConflict-stderr.txt | 2 +- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 93692f61e..61470092f 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -3015,7 +3015,7 @@ void cmGlobalGenerator::AddEvaluationFile(const std::string &inputFile, //---------------------------------------------------------------------------- void cmGlobalGenerator::ProcessEvaluationFiles() { - std::set generatedFiles; + std::vector generatedFiles; for(std::vector::const_iterator li = this->EvaluationFiles.begin(); li != this->EvaluationFiles.end(); @@ -3027,16 +3027,24 @@ void cmGlobalGenerator::ProcessEvaluationFiles() return; } std::vector files = (*li)->GetFiles(); - for(std::vector::const_iterator fi = files.begin(); - fi != files.end(); ++fi) + std::sort(files.begin(), files.end()); + + std::vector intersection; + std::set_intersection(files.begin(), files.end(), + generatedFiles.begin(), generatedFiles.end(), + std::back_inserter(intersection)); + if (!intersection.empty()) { - if (!generatedFiles.insert(*fi).second) - { - cmSystemTools::Error("File to be generated by multiple different " - "commands: ", fi->c_str()); - return; - } + cmSystemTools::Error("Files to be generated by multiple different " + "commands: ", cmWrap('"', intersection, '"', " ").c_str()); + return; } + + generatedFiles.insert(generatedFiles.end(), + files.begin(), files.end()); + std::vector::iterator newIt = + generatedFiles.end() - files.size(); + std::inplace_merge(generatedFiles.begin(), newIt, generatedFiles.end()); } } diff --git a/Tests/RunCMake/File_Generate/CommandConflict-stderr.txt b/Tests/RunCMake/File_Generate/CommandConflict-stderr.txt index da97ba476..4fa3f2033 100644 --- a/Tests/RunCMake/File_Generate/CommandConflict-stderr.txt +++ b/Tests/RunCMake/File_Generate/CommandConflict-stderr.txt @@ -1 +1 @@ -CMake Error: File to be generated by multiple different commands: .*CommandConflict-build/output_.*.txt +CMake Error: Files to be generated by multiple different commands: ".*CommandConflict-build/output_.*.txt"