Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 为特定目标(包)运行fixup\u捆绑包_Cmake_Cpack - Fatal编程技术网

Cmake 为特定目标(包)运行fixup\u捆绑包

Cmake 为特定目标(包)运行fixup\u捆绑包,cmake,cpack,Cmake,Cpack,我希望在运行CPACK时合并外部DLL,而不枚举所有DLL(通过显式调用INSTALL(FILE…) 使用fixup\u bundle可以通过复制所需的库来修复安装文件夹(CMAKE\u install\u PREFIX)中的所有可执行文件 INSTALL(CODE " include(BundleUtilities) fixup_bundle(\"${APPS}\" \"\" \"${DIRS}\") " DESTINATION bin COMPONENT Runti

我希望在运行CPACK时合并外部DLL,而不枚举所有DLL(通过显式调用INSTALL(FILE…)

使用fixup\u bundle可以通过复制所需的库来修复安装文件夹(CMAKE\u install\u PREFIX)中的所有可执行文件

INSTALL(CODE "
   include(BundleUtilities)
   fixup_bundle(\"${APPS}\"   \"\"   \"${DIRS}\")
   " DESTINATION bin COMPONENT Runtime)
此代码在构建安装目标时执行,将仅处理文件夹CMAKE_INSTALL_前缀中的元素

相反,我想做的是在构建由CPACK添加的包的过程中运行fixup\u bundle。通过这种方式,生成的安装脚本还将包括externa库

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

有人做到了吗?

到目前为止,我找到的最佳解决方案不依赖于fixup\u bundle,而是列出运行时配置必须安装的所有文件(例如所有DLL)

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

#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)