windows - 在 cmake 中获取 Windows 可执行文件的运行时依赖项并安装它们
问题描述
我在 Windows 上使用 CMake,并且需要将所需的 dll 文件与可执行文件一起打包,因为该可执行文件是 Windows 服务,并且需要将它们全部放在同一个文件夹中。下面的代码使用新的 GET_RUNTIME_DEPENDENCIES 功能,但我也需要安装这些运行时依赖项。下面的代码不会将 dll 文件添加到包中。文件的简单副本可以正常工作。是否有任何解决方案可以将所有必需的 dll 文件打包到可安装包中?
if(WIN32)
target_compile_definitions(${PROJECT_NAME}_obj
PUBLIC
WINDOWS
)
install(CODE [[
file(GET_RUNTIME_DEPENDENCIES
DIRECTORIES
"C:\\msys64\\mingw32\\bin"
"C:\\msys64\\mingw64\\bin"
PRE_EXCLUDE_REGEXES
"api-ms-*"
POST_EXCLUDE_REGEXES
".*system32/.*\\.dll"
RESOLVED_DEPENDENCIES_VAR deps
EXECUTABLES $<TARGET_FILE:myapp>)
message(STATUS ${deps})
file(INSTALL DESTINATION "bin" TYPE EXECUTABLE FILES ${deps})
]])
endif()
解决方案
推荐阅读
- registry - 查询 HKCU 中显示的已安装应用程序值?
- ios - 如何使用 UIContextMenuConfiguration 给出的建议操作?
- javascript - 使用 React 从 FileStream 返回下载文件
- php - 如果where子句是零整数,为什么sql查询返回一个值?
- python - 将一个数字范围内的所有数字相乘
- javascript - 检查数组中链接的单击是否具有子菜单键值。IF true 运行一些代码 ELSE 运行其他代码
- php - woocommerce:产品属性不会增加价值
- java - 如何仅使用 TestPropertySource 加载数据库一次并在多个测试类中使用它?
- java - Arrays.sort 的 lambda 表达式和 Comparator 的匿名实现之间的区别?
- java - 如何绑定到 JavaFX 中的 layoutBounds?