file(MAKE_DIRECTORY): Provide a more descriptive error message

Previously, MAKE_DIRECTORY would print `problem creating directory: {}`,
which was very unhelpful for debugging.  Extend the message with the
OS error string.
This commit is contained in:
Terence Noone 2022-12-07 19:48:22 -05:00 committed by Brad King
parent 127fa54808
commit efae1ab68b
5 changed files with 18 additions and 2 deletions

View File

@ -845,8 +845,10 @@ bool HandleMakeDirectoryCommand(std::vector<std::string> const& args,
cmSystemTools::SetFatalErrorOccurred();
return false;
}
if (!cmSystemTools::MakeDirectory(*cdir)) {
std::string error = "problem creating directory: " + *cdir;
cmsys::Status mkdirStatus = cmSystemTools::MakeDirectory(*cdir);
if (!mkdirStatus) {
std::string error = cmStrCat("failed to create directory:\n ", *cdir,
"\nbecause: ", mkdirStatus.GetString());
status.SetError(error);
return false;
}

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,9 @@
^CMake Error at [^
]*/MAKE_DIRECTORY-fail.cmake:[0-9]+ \(file\):
file failed to create directory:
[^
]*/Tests/RunCMake/file/MAKE_DIRECTORY-fail-build/file/directory
because: [^
]+$

View File

@ -0,0 +1,2 @@
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/file" "")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/file/directory")

View File

@ -61,6 +61,8 @@ run_cmake_script(COPY_FILE-arg-unknown)
run_cmake_script(COPY_FILE-input-missing)
run_cmake_script(COPY_FILE-output-missing)
run_cmake_script(MAKE_DIRECTORY-fail)
run_cmake_script(RENAME-file-replace)
run_cmake_script(RENAME-file-to-file)
run_cmake_script(RENAME-file-to-dir-capture)