Как я могу использовать CPACK_INSTALL_COMMANDS? - PullRequest
4 голосов
/ 17 октября 2011

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

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

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

1 Ответ

4 голосов
/ 16 ноября 2011

Вы ничего не пропустили, просто не работает переменная 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 или нет. Если нет, я расскажу немного подробнее и добавлю еще несколько советов.)

...