将fixup_bundle结果添加到CPack

问题描述 投票:0回答:1

如何将使用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目标(使用NSIS构建器)时,它只复制EXE文件和文本内容,而不需要额外的DLL库。

cmake nsis cpack
1个回答
0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.