我想安装一个文件 /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目录中安装文件?
答案 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()
的存在。