CMake rpm在/etc/init.d中安装文件

时间:2011-12-09 08:21:59

标签: cmake cpack

我想安装一个文件 /etc/ini.d目录

我已经编写了代码

INSTALL(FILES  ${CMAKE_SOURCE_DIR}/app/script/appd  DESTINATION /etc/init.d/appd)

但是当我使用cmake运行打包代码时,我收到错误

CMake Error at /home/vivek/workspace/app/build/standalone/cmake_install.cmake:54 (FILE):
  file cannot create directory: /etc/init.d/appd.  Maybe need
  administrative privileges.

如何设置cmake在/etc/init.d目录中安装文件?

2 个答案:

答案 0 :(得分:4)

您可以这样做,但您可能需要明确设置:

set(CPACK_SET_DESTDIR ON)

之前:

include(CPack)

在您的CMakeLists.txt文件中。 (您只需要在CMake / CPack上的旧版本,2.8.3之前执行此操作)

您需要执行此操作的原因是您要将完整路径名指定为已安装文件的DESTINATION。为了在打包阶段正确地做到这一点,CPack需要在其“make install”调用中使用DESTDIR环境变量。

出于向后兼容性原因,我们默认情况下不会自动执行此操作。

但是,这个错误在版本2.8.3中得到修复,因此可以使用完整路径名的安装规则透明地自动完成:

http://public.kitware.com/Bug/view.php?id=7000

希望您可以为您的rpm包使用CPACK_SET_DESTDIR为ON,或者使用包含自动修复的更新版本的CMake / CPack。

答案 1 :(得分:-1)

你做不到。您唯一能做的就是要求用户为您的应用运行make install并提供管理权限。

此外,您可以尝试检测使用sudo安装文件的sudo命令和add_custom_command()的存在。