Использование BundleUtilities для упаковки исполняемого файла + зависимости - PullRequest
2 голосов
/ 05 марта 2019

Я хочу создать автономный пакет с зависимостями исполняемого + общей библиотеки и развернуть его в минимальном контейнере Docker.

Из моих исследований видно, что BundleUtitilies можно использовать, чтобы позволить cmake создавать себяприложения.Однако я не могу заставить его работать, и мне не хватает хороших минимальных примеров.

 install (TARGETS testPublisher_ecal RUNTIME DESTINATION bin OPTIONAL)

 if(BUNDLE)
    install (CODE "
        include(BundleUtilities)
        fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/bin/testPublisher_ecal\" \"\" \"\")
    " OPTIONAL)
 else()

 endif()

Насколько я понимаю, fixup_bundle в основном нуждается в пути к исполняемому файлу.Однако приведенный выше фрагмент дает только

Install the project...
-- Install configuration: "Release"
-- Installing: /app/install/bin/testPublisher_ecal
-- Set runtime path of "/app/install/bin/testPublisher_ecal" to ""
-- fixup_bundle
--   app='/app/install/bin/testPublisher_ecal'
--   libs=''
--   dirs=''
--   ignoreItems=''
-- warning: No 'file' command, skipping execute_process...
-- warning: *NOT* handled - not .app dir, not executable file...
[91mCMake Error at /opt/cmake/share/cmake-3.12/Modules/BundleUtilities.cmake:966 (message):
  error: fixup_bundle: not a valid bundle
Call Stack (most recent call first):
  algos/testsProto/publisher/ecal/cmake_install.cmake:63 (fixup_bundle)
  algos/testsProto/publisher/cmake_install.cmake:43 (include)
  cmake_install.cmake:43 (include)

. Он пытается мне что-то сказать, кто-то может перевести?Разве это не поиск исполняемого файла?Он находит исполняемый файл, но ему не хватает некоторых аргументов?

1 Ответ

0 голосов
/ 10 апреля 2019

У меня была такая же проблема при сборке внутри образа докера. Проблема в том, что команда unix 'file' отсутствует. В моем случае установка 'file' осуществляется с помощью: apt-get установочный файл

исправил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...