Добавить результат fixup_bundle в CPack - PullRequest
0 голосов
/ 05 сентября 2018

Как добавить дополнительные библиотеки, которые были найдены с помощью fixup_bundle в CPack?

Это мой скрипт установки CMake:

install(
    TARGETS ${PROJECT_NAME}
    RUNTIME DESTINATION .)

install(
    FILES
        ${PROJECT_SOURCE_DIR}/LICENSE
        ${PROJECT_SOURCE_DIR}/COPYRIGHT
        ${PROJECT_SOURCE_DIR}/CHANGELOG
        ${PROJECT_SOURCE_DIR}/DESCRIPTION
    DESTINATION .)

install(
    CODE
    "
        include(InstallRequiredSystemLibraries)
        include(BundleUtilities)
        fixup_bundle(${CMAKE_INSTALL_PREFIX}/${SERVICE_INSTALL_PREFIX}/test.exe  \"\" \"\")
    "
    DESTINATION .
    COMPONENT Runtime)

В папке install я могу найти свой EXE-файл, текстовые файлы (LICENSE, COPYRIGHT и т. Д.) И все необходимые библиотеки DLL.

Но когда я выполняю package target (с помощью NSIS Builder), он копирует только EXE-файл и текстовые файлы без дополнительных библиотек DLL.

1 Ответ

0 голосов
/ 06 сентября 2018

CPack заменит переменную CMAKE_INSTALL_PREFIX на правильную. Но для этой строки ${CMAKE_INSTALL_PREFIX} должно существовать в тот момент, когда CPack выполнит код. Достаточно обернуть каждый аргумент для fixup_bundle в строку.

install(
    CODE
    "
        include(InstallRequiredSystemLibraries)
        include(BundleUtilities)
        fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${SERVICE_INSTALL_PREFIX}/test.exe\"  \"\" \"\")
    "
    DESTINATION .
    COMPONENT Runtime)
...