安装前请检查目标目录的权限
Check permissions of the destination directory before installing
我一直在文档和SO中搜索,但我还没有找到这个问题的答案。
使用cmake,我试图在安装一些库之前检查DESTINATION目录的权限。
是否有一些命令在cmake做这个?我需要用自定义命令进行检查吗?
作为一个例子,这是我在CMakeLists.txt
中的代码:
INSTALL( TARGETS ${LIBRARY_NAME}
DESTINATION lib/plugins/
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )
这个想法是在安装插件之前检查用户是否有在lib/plugins/
中写入所需的权限。
您可以使用install(SCRIPT ...)
命令流在安装阶段执行一些CMake脚本。例如:
check_script.cmake.in:
EXECUTE_PROCESS(COMMAND test -w @CMAKE_INSTALL_PREFIX@/lib/plugins
RESULT_VARIABLE res)
IF(res)
MESSAGE(FATAL_ERROR "No write permissions on plugins directory")
ENDIF()
CMakeLists.txt:
CONFIGURE_FILE(check_script.cmake.in check_script.cmake @ONLY)
INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/check_script.cmake)
INSTALL( TARGETS ${LIBRARY_NAME} DESTINATION lib/plugins/ ...)
正如您所看到的,在安装阶段检查文件权限是太多的工作。实际上,您很少需要这样的检查:如果安装文件失败,整个安装过程立即停止,并向用户显示适当的消息。
相关文章:
- 如何使用Windows API C++更改已创建的文件夹/目录安全权限
- 使用 C++ 设置目录的权限
- Cmake 使用目标target_include_directories时无法指定包含目录
- 如何包括在下游目标上添加的AutouIC的目录
- 是否可以在编译后创建 CMake 目标和文件目录?
- CMake:设置目标源的目录
- 窗口 :创建仅具有对我的进程的权限的目录 (C++)
- 多个子目录中对象文件的通用makefile目标
- 需要知道目录是否具有C++的写入权限
- 将多个源目录构建到同一目标目录中
- 具有多个目标的生成文件,并创建一个包含可执行文件的目录
- CMake:尝试将链接库添加到目标,但该链接库不是在此目录中生成的
- 目标文件需要放在不同的目录中
- 安装前请检查目标目录的权限
- Makefile获取目录中的所有目标文件
- libthrift-0.9.1.so:不能打开共享目标文件:没有这样的文件或目录
- File stat()vs access()来检查目录上的权限
- 如果我的程序正在将dll文件复制到临时目录,我需要特定的权限吗
- CMake在不同的生成目录中生成多个目标
- MakeFile目标目录