将 fixup_bundle 结果添加到 CPack

Add fixup_bundle result to CPack

如何将使用 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 文件、文本内容(许可证、版权等)和所有必需的 DLL 库。

但是当我执行 package 目标(使用 NSIS 生成器)时,它只复制 EXE 文件和文本内容,没有额外的 DLL 库。

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)