CMake rpm устанавливает файл в /etc/init.d

Я хочу установить файл в каталог /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?


person Vivek Goel    schedule 09.12.2011    source источник


Ответы (2)


Вы можете сделать это, но вам может потребоваться явно установить:

set(CPACK_SET_DESTDIR ON)

до:

include(CPack)

в вашем файле CMakeLists.txt. (Вам нужно будет сделать это только для более старых версий CMake/CPack, до 2.8.3)

Причина, по которой вам нужно это сделать, заключается в том, что вы указываете полное имя пути в качестве НАЗНАЧЕНИЯ одного из ваших установленных файлов. Чтобы сделать это правильно на этапе упаковки, CPack должен использовать переменную среды DESTDIR в своем вызове «make install».

Мы не делали этого автоматически по умолчанию из соображений обратной совместимости.

Но затем эта ошибка была исправлена ​​в версии 2.8.3, чтобы ее можно было сделать прозрачно и автоматически с помощью правил установки, использующих полные имена путей:

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

Надеюсь, вы можете использовать либо CPACK_SET_DESTDIR в ON для ваших пакетов rpm, либо использовать более новую версию CMake/CPack, которая включает автоматическое исправление.

person DLRdave    schedule 09.12.2011

Вы не можете. Единственное, что вы можете сделать, это попросить пользователя запустить make install для вашего приложения с правами администратора.

Кроме того, вы можете попробовать определить наличие команд sudo и add_custom_command(), которые установят ваши файлы с помощью sudo.

person arrowd    schedule 09.12.2011