CMake rpm устанавливает файл в /etc/init.d - PullRequest
2 голосов
/ 09 декабря 2011

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

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011

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

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, которая включает автоматическое исправление.

0 голосов
/ 09 декабря 2011

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

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

...