CMake check path write access
CMake configure time is often a convenient time to test if a directory or file is writable.
It can be useful to immediately stop with message(FATAL_ERROR)
if a path is not writable.
For example, if CMAKE_INSTALL_PREFIX
is not in a writable location – we want to fail right then and inform users what to do to correct the problem.
file(TOUCH)
and file(MAKE_DIRECTORY)
do not halt the configure step.
Rather, if a path isn’t writable CMake only errors at the end of configure.
Example solution:
This snippet generates a fatal error with text telling the user what to try:
set(test_path /path/to/test/.ignore)
# could be done with random string filename in the desired path
execute_process(COMMAND ${CMAKE_COMMAND} -E touch ${test_path}
RESULT_VARIABLE ret
)
if(NOT ret EQUAL "0")
message(FATAL_ERROR "No write access to ${test_path}
<text for user to resolve issue>")
endif()