2

我想在 /etc/init.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 目录中安装文件?

4

2 回答 2

4

您可以这样做,但您可能需要显式设置:

set(CPACK_SET_DESTDIR ON)

之前:

include(CPack)

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

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

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

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

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

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

于 2011-12-09T15:42:54.830 回答
-1

你不能。您唯一能做的就是要求用户以make install管理权限运行您的应用程序。

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

于 2011-12-09T13:55:40.650 回答