我想在运行CPACK时合并外部dll,而不枚举所有外部dll(通过显式调用INSTALL(FILE ...))
使用fixup_bundle,可以通过复制所需的库来修复安装文件夹(CMAKE_INSTALL_PREFIX)中的所有可执行文件。
INSTALL(CODE "
include(BundleUtilities)
fixup_bundle(\"${APPS}\" \"\" \"${DIRS}\")
" DESTINATION bin COMPONENT Runtime)
Run Code Online (Sandbox Code Playgroud)
此代码在构建INSTALL目标时执行,并且仅处理存在于文件夹CMAKE_INSTALL_PREFIX中的元素。
我想做的是在CPACK添加的PACKAGE目标的构建过程中运行fixup_bundle。这样,生成的安装脚本还将包括externa库。
有没有人设法做到这一点?
到目前为止,我发现的最佳解决方案不依赖于 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)
Run Code Online (Sandbox Code Playgroud)
然后,您可以递归目标依赖项以使用以下命令执行相同的两个操作
get_target_property(link_libs ${target} INTERFACE_LINK_LIBRARIES)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
586 次 |
| 最近记录: |