Упаковка системного демона на Mac с помощью CPack - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь создать общесистемный сервис на Mac, используя CMake для сборки и CPack для генерации пакета. Хранилище довольно большое, поэтому я создал уменьшенную версию для его тестирования. Оказывается, я не знаю, как упаковать что-то, что имеет абсолютный путь в качестве пункта назначения.

Это код CMake:

install(PROGRAMS ${CMAKE_BINARY_DIR}/hello
        DESTINATION "/var/local/hello"
        COMPONENT TS
      )

install(PROGRAMS com.hello.world.plist
        DESTINATION "/Library/LaunchDaemons/"
        COMPONENT TS
      )

А это выход из cpack

mac-mini-2:build melanoholly$ cpack ..
CPack: Create package using productbuild
CPack: Install projects
CPack: - Run preinstall target for: testingPack
CPack: - Install project: testingPack
CMake Error at /Users/salvobit/sandbox/cpack-example-mac-daemon/build/cmake_install.cmake:44 (file):
  file cannot create directory: /var/local/hello.  Maybe need administrative
  privileges.


CMake Error at /Users/salvobit/sandbox/cpack-example-mac-daemon/build/cmake_install.cmake:56 (file):
  file INSTALL cannot copy file
  "/Users/salvobit/sandbox/cpack-example-mac-daemon/com.hello.world.plist" to
  "/Library/LaunchDaemons/com.hello.world.plist".


CPack Error: Error when generating package: testingPack

Если я запускаю cpack от имени пользователя root, сгенерированный пакет будет пустым.

Может кто-нибудь дать мне идею и как это исправить?

Я использую CMake версии 3.13.0-rc2 .

1 Ответ

0 голосов
/ 05 февраля 2019

Ключом к решению этой проблемы было указание CMAKE_INSTALL_PREFIX как этого

set(CMAKE_INSTALL_PREFIX "/")

Когда вы делаете это так, вы можете установить путь в /var/ как

install(PROGRAMS <binary>
        DESTINATION "../var")
...