Как использовать CPACK_INSTALL_COMMANDS?

Я создаю самораспаковывающийся установщик Linux tgz с помощью CPack, и я бы хотел, чтобы установщик запускал сценарий или последовательность команд после установки всех файлов. Документация CPack содержит следующие инструкции:

CPACK_INSTALL_COMMANDS Дополнительные команды для установки компонентов.

Я установил эту переменную в моем файле CMakeLists.txt, и я вижу, что она установлена ​​в итоговом файле CPackConfig.cmake, но команды, которые я встраиваю в эту переменную, не отображаются нигде в окончательном сценарии установки .sh. Что мне не хватает?


person Dave Taflin    schedule 17.10.2011    source источник


Ответы (1)


Вы ничего не упускаете, это просто не то, как работает переменная CPACK_INSTALL_COMMANDS.

В типичном проекте CPack выполняет «make install» во временном месте, чтобы создать окончательный установщик на основе дерева «make install». Переменная CPACK_INSTALL_COMMANDS предназначена для установки для проектов, которые предпочитают запускать другую последовательность команд, вместо типичного «make install» для создания дерева установки.

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

Существуют способы запуска установленных исполняемых файлов и / или сценариев для каждого генератора в конце установки конечного пользователя, но это потребует некоторой настройки с вашей стороны. В этом случае я бы рекомендовал попытаться переопределить входной файл CPack.STGZ_Header.sh.in, который используется, когда CPack генерирует самораспаковывающийся скрипт STGZ. Настройте этот файл и добавьте свои вызовы внизу, над строкой:

exit 0

Чтобы переопределить файл, предоставьте свою собственную копию в исходном дереве, возможно, в каталоге $ {CMAKE_CURRENT_SOURCE_DIR} / CMake, а затем в файле CMakeLists.txt добавьте:

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH})

(На самом деле, когда я пишу это, мне интересно, достаточно ли этого, или путь к модулю также должен быть установлен во время запуска CPack ... Попробуйте это и дайте нам знать, используются ли ваши настройки CPack или нет. Если нет, я немного разберусь и добавлю здесь еще несколько советов.)

person DLRdave    schedule 16.11.2011