Browse Source

file(GLOB): Ensure entire file list is sorted

pull/320/head
Shane Parris 8 years ago
parent
commit
b688d4fd22
  1. 19
      Source/cmFileCommand.cxx

19
Source/cmFileCommand.cxx

@ -757,8 +757,7 @@ bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args,
} }
} }
std::ostringstream outputStream;
bool first = true;
std::vector<std::string> files;
bool warnFollowedSymlinks = false; bool warnFollowedSymlinks = false;
while (i != args.end()) { while (i != args.end()) {
if (*i == "LIST_DIRECTORIES") { if (*i == "LIST_DIRECTORIES") {
@ -848,15 +847,8 @@ bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args,
warnFollowedSymlinks = true; warnFollowedSymlinks = true;
} }
std::vector<std::string>& files = g.GetFiles();
std::sort(files.begin(), files.end());
for (std::string const& file : files) {
if (!first) {
outputStream << ";";
}
outputStream << file;
first = false;
}
std::vector<std::string>& foundFiles = g.GetFiles();
files.insert(files.end(), foundFiles.begin(), foundFiles.end());
++i; ++i;
} }
} }
@ -880,7 +872,10 @@ bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args,
} }
break; break;
} }
this->Makefile->AddDefinition(variable, outputStream.str().c_str());
std::sort(files.begin(), files.end());
files.erase(std::unique(files.begin(), files.end()), files.end());
this->Makefile->AddDefinition(variable, cmJoin(files, ";").c_str());
return true; return true;
} }

Loading…
Cancel
Save