【问题标题】:CMake rpm installing a file in /etc/init.dCMake rpm 在 /etc/init.d 中安装文件
【发布时间】:2011-12-09 08:21:58
【问题描述】:

我想安装一个文件 /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 目录中安装文件?

【问题讨论】:

    标签: cmake cpack


    【解决方案1】:

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

    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。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-28
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 2012-05-26
        • 2020-10-21
        相关资源
        最近更新 更多