ENH: Patch from Alex for adding IF(FILE_IS_NEWER). I also added a test.
This commit is contained in:
parent
ebf532b106
commit
6449089436
|
@ -226,7 +226,7 @@ bool cmIfCommand::IsTrue(const std::vector<std::string> &args,
|
|||
IncrementArguments(newArgs,argP1,argP2);
|
||||
reducible = 1;
|
||||
}
|
||||
// does a file exist
|
||||
// does a directory with this name exist
|
||||
if (*arg == "IS_DIRECTORY" && argP1 != newArgs.end())
|
||||
{
|
||||
if(cmSystemTools::FileIsDirectory((argP1)->c_str()))
|
||||
|
@ -242,6 +242,27 @@ bool cmIfCommand::IsTrue(const std::vector<std::string> &args,
|
|||
IncrementArguments(newArgs,argP1,argP2);
|
||||
reducible = 1;
|
||||
}
|
||||
// is file A newer than file B
|
||||
if (*arg == "FILE_IS_NEWER" && argP1 != newArgs.end() && argP2 != newArgs.end())
|
||||
{
|
||||
int fileIsNewer=0;
|
||||
bool success=cmSystemTools::FileTimeCompare((argP1)->c_str(), (argP2)->c_str(),
|
||||
&fileIsNewer);
|
||||
if(success==false || fileIsNewer==1 || fileIsNewer==0)
|
||||
{
|
||||
*arg = "1";
|
||||
}
|
||||
else
|
||||
{
|
||||
*arg = "0";
|
||||
}
|
||||
|
||||
newArgs.erase(argP2);
|
||||
newArgs.erase(argP1);
|
||||
argP1 = arg;
|
||||
IncrementArguments(newArgs,argP1,argP2);
|
||||
reducible = 1;
|
||||
}
|
||||
// does a command exist
|
||||
if (*arg == "COMMAND" && argP1 != newArgs.end())
|
||||
{
|
||||
|
|
|
@ -128,6 +128,10 @@ public:
|
|||
" IF(EXISTS directory-name)\n"
|
||||
"True if the named file or directory exists. "
|
||||
"Behavior is well-defined only for full paths.\n"
|
||||
" IF(FILE_IS_NEWER file1 file2)\n"
|
||||
"True if file1 is newer than file2 or if one of the two files "
|
||||
"doesn't exist. "
|
||||
"Behavior is well-defined only for full paths.\n"
|
||||
" IF(IS_DIRECTORY directory-name)\n"
|
||||
"True if the given name is a directory. "
|
||||
"Behavior is well-defined only for full paths.\n"
|
||||
|
|
|
@ -75,6 +75,11 @@ FOREACH(var
|
|||
FILE(APPEND "${file}" "#define ${var} \"${${var}}\"\n")
|
||||
ENDFOREACH(var)
|
||||
|
||||
# Verify that the file was created recently.
|
||||
IF(NOT FILE_IS_NEWER "${file}" "${CMAKE_CURRENT_SOURCE_DIR}/InputFile.h.in")
|
||||
MESSAGE(FATAL_ERROR "IF(FILE_IS_NEWER) does not seem to work.")
|
||||
ENDIF(NOT FILE_IS_NEWER "${file}" "${CMAKE_CURRENT_SOURCE_DIR}/InputFile.h.in")
|
||||
|
||||
# Test configuration of the string
|
||||
SET(TEST_DEFINED 123)
|
||||
SET(TEST_NOT_DEFINED)
|
||||
|
|
Loading…
Reference in New Issue