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:
parent
127fa54808
commit
efae1ab68b
@ -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;
|
||||
}
|
||||
|
1
Tests/RunCMake/file/MAKE_DIRECTORY-fail-result.txt
Normal file
1
Tests/RunCMake/file/MAKE_DIRECTORY-fail-result.txt
Normal file
@ -0,0 +1 @@
|
||||
1
|
9
Tests/RunCMake/file/MAKE_DIRECTORY-fail-stderr.txt
Normal file
9
Tests/RunCMake/file/MAKE_DIRECTORY-fail-stderr.txt
Normal 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: [^
|
||||
]+$
|
2
Tests/RunCMake/file/MAKE_DIRECTORY-fail.cmake
Normal file
2
Tests/RunCMake/file/MAKE_DIRECTORY-fail.cmake
Normal file
@ -0,0 +1,2 @@
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/file" "")
|
||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/file/directory")
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user