首页 > 解决方案 > 在 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()

标签: windowscmake

解决方案


推荐阅读