gpt4 book ai didi

cmake - 为特定目标运行 fixup_bundle (PACKAGE)

转载 作者:行者123 更新时间:2023-12-03 17:51:27 25 4
gpt4 key购买 nike

我想在运行 CPACK 时合并外部 dll,而不枚举所有这些(通过显式调用 INSTALL(FILE ...) )

就业 fixup_bundle 可以通过复制所需的库来修复安装文件夹 ( CMAKE_INSTALL_PREFIX ) 中的所有可执行文件。

INSTALL(CODE "
include(BundleUtilities)
fixup_bundle(\"${APPS}\" \"\" \"${DIRS}\")
" DESTINATION bin COMPONENT Runtime)

此代码在构建 时执行安装 目标并将仅处理文件夹 CMAKE_INSTALL_PREFIX 中存在的元素。

我想做的是运行 fixup_bundle build 期间 包装 CPACK 添加的目标。这样,生成的安装脚本也将包含外部库。

有没有人设法做到这一点?

最佳答案

到目前为止,我发现的最佳解决方案不依赖于 fixup_bundle,而是列出了必须为运行时配置安装的所有文件(例如所有 dll)。

给定一个目标,您可以恢复关联的运行时文件并将其添加到 INSTALL 项目中:

#get dll location
get_target_property(BIN_F ${target} LOCATION_${Configuration})

#copy to the bin folder
install(FILES ${BIN_F} DESTINATION ${destinationFolder}
CONFIGURATIONS ${Configuration}
COMPONENT Runtime)

然后,您可以递归目标依赖项以执行相同的两个操作
get_target_property(link_libs ${target} INTERFACE_LINK_LIBRARIES)

关于cmake - 为特定目标运行 fixup_bundle (PACKAGE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20564261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com