mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-26 08:08:24 -05:00
cmake: Add '-E sleep' command
Add a cmake command-line interface to provide a cross-platform 'sleep'.
This commit is contained in:
@@ -71,6 +71,7 @@ void CMakeCommandUsage(const char* program)
|
||||
"(on one volume)\n"
|
||||
<< " tar [cxt][vfz][cvfj] file.tar [file/dir1 file/dir2 ...]\n"
|
||||
<< " - create or extract a tar or zip archive\n"
|
||||
<< " sleep <number>... - sleep for given number of seconds\n"
|
||||
<< " time command [args] ... - run command and return elapsed time\n"
|
||||
<< " touch file - touch a file.\n"
|
||||
<< " touch_nocreate file - touch a file but do not create it.\n"
|
||||
@@ -279,6 +280,33 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Sleep command
|
||||
else if (args[1] == "sleep" && args.size() > 2)
|
||||
{
|
||||
double total = 0;
|
||||
for(size_t i = 2; i < args.size(); ++i)
|
||||
{
|
||||
double num = 0.0;
|
||||
char unit;
|
||||
char extra;
|
||||
int n = sscanf(args[i].c_str(), "%lg%c%c", &num, &unit, &extra);
|
||||
if((n == 1 || (n == 2 && unit == 's')) && num >= 0)
|
||||
{
|
||||
total += num;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Unknown sleep time format \"" << args[i] << "\".\n";
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
if(total > 0)
|
||||
{
|
||||
cmSystemTools::Delay(static_cast<unsigned int>(total*1000));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Clock command
|
||||
else if (args[1] == "time" && args.size() > 2)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user