在安装

时间:2015-09-07 10:16:39

标签: c++ 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/中写入所需的权限。

1 个答案:

答案 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/ ...)

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