我一直在搜索文档,但是我没有找到这个问题的答案。
使用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/
中写入所需的权限。
答案 0 :(得分:2)
您可以使用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/ ...)
正如您所看到的,在安装阶段检查文件权限太多了。实际上,您很少需要这样的检查:如果安装文件失败,整个安装过程会立即停止,并向用户显示相应的消息。