ソースを参照

file(TIMESTAMP): Interpret relative paths w.r.t. the source tree

Fixes: #23610
TheBrokenRail 3 年 前
コミット
733801b57f

+ 5 - 1
Source/cmFileCommand.cxx

@@ -2836,7 +2836,11 @@ bool HandleTimestampCommand(std::vector<std::string> const& args,
 
   unsigned int argsIndex = 1;
 
-  const std::string& filename = args[argsIndex++];
+  std::string filename = args[argsIndex++];
+  if (!cmsys::SystemTools::FileIsFullPath(filename)) {
+    filename = cmStrCat(status.GetMakefile().GetCurrentSourceDirectory(), '/',
+                        filename);
+  }
 
   const std::string& outputVariable = args[argsIndex++];
 

+ 1 - 0
Tests/RunCMake/file/RunCMakeTest.cmake

@@ -47,6 +47,7 @@ run_cmake(GLOB_RECURSE)
 run_cmake(GLOB_RECURSE-noexp-FOLLOW_SYMLINKS)
 run_cmake(SIZE)
 run_cmake(SIZE-error-does-not-exist)
+run_cmake(TIMESTAMP)
 
 run_cmake(REMOVE-empty)
 

+ 1 - 0
Tests/RunCMake/file/TIMESTAMP-stdout.txt

@@ -0,0 +1 @@
+-- '[0-9]*-[01][0-9]-[0-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-6][0-9]Z'

+ 2 - 0
Tests/RunCMake/file/TIMESTAMP.cmake

@@ -0,0 +1,2 @@
+file(TIMESTAMP "TIMESTAMP.cmake" output UTC)
+message(STATUS "'${output}'")