CMake rpm 在 /etc/init.d 中安装文件
Posted
技术标签:
【中文标题】CMake rpm 在 /etc/init.d 中安装文件【英文标题】:CMake rpm installing a file in /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 目录中安装文件?
【问题讨论】:
【参考方案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 安装您的文件。
【讨论】:
以上是关于CMake rpm 在 /etc/init.d 中安装文件的主要内容,如果未能解决你的问题,请参考以下文章