2015-09-07 66 views
1

我一直在搜索文档和SO,但我还没有找到这个问题的答案。安装前检查目的地目录的权限

使用,我试图在安装某些库之前检查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/写。

回答

2

您可以使用install(SCRIPT ...)命令流程在安装阶段执行一些CMake脚本。例如:

check_script.cmake.in:

EXECUTE_PROCESS(COMMAND test -w @[email protected]/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/ ...) 

正如你可以看到,这是太多的工作,在检查文件权限安装阶段。实际上,您很少需要这样的检查:如果安装文件失败,整个安装过程会立即停止,并向用户显示相应的消息。