CMake-如何动态链接gcc运行库 我是CGube的新手,目前正在学习C++和CMake。

CMake-如何动态链接gcc运行库 我是CGube的新手,目前正在学习C++和CMake。,c++,cmake,C++,Cmake,我以前尝试过构建我的简单应用程序,我的目标是将所有依赖项(包括运行时libs)作为dll(没有特别的原因,我这样做是为了学习) 我努力寻找一种方法,使cmake能够自动找到所有依赖的运行时lib(在我的例子中是libgcc_s_dw2-1,libstdc++-6和libwinpthread-1),并将其复制到exe所在的目录中 我的问题是: 首先,我的方法明智吗?我找到了许多关于如何静态链接这些内容的说明,但这不是我想要的 如何实现我想做的事?我正在尝试类似于: get_filename_组件(

我以前尝试过构建我的简单应用程序,我的目标是将所有依赖项(包括运行时libs)作为dll(没有特别的原因,我这样做是为了学习)

我努力寻找一种方法,使cmake能够自动找到所有依赖的运行时lib(在我的例子中是
libgcc_s_dw2-1
libstdc++-6
libwinpthread-1
),并将其复制到exe所在的目录中

我的问题是:

  • 首先,我的方法明智吗?我找到了许多关于如何静态链接这些内容的说明,但这不是我想要的
  • 如何实现我想做的事?我正在尝试类似于:
  • get_filename_组件(Mingw_路径${CMAKE_CXX_编译器}路径)
    添加自定义命令(
    目标数学后期构建
    命令${CMAKE_COMMAND}-E复制
    ${Mingw_Path}/libgcc_s_dw2-1.dll
    $
    )
    添加自定义命令(
    目标数学后期构建
    命令${CMAKE_COMMAND}-E复制
    ${Mingw_Path}/libstdc++-6.dll
    $
    )
    添加自定义命令(
    目标数学后期构建
    命令${CMAKE_COMMAND}-E复制
    ${Mingw_Path}/libwinpthread-1.dll
    $
    )
    
    这是可行的,但它不会自动为我找到所有东西,我想我不必手动从mingw找到我需要的每个dll

    在这个git repo中可以看到整个存储库:

    get_filename_component( Mingw_Path ${CMAKE_CXX_COMPILER} PATH )
    add_custom_command(
            TARGET Maths POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E copy
            ${Mingw_Path}/libgcc_s_dw2-1.dll
            $<TARGET_FILE_DIR:Maths>
    )
    
    add_custom_command(
            TARGET Maths POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E copy
            ${Mingw_Path}/libstdc++-6.dll
            $<TARGET_FILE_DIR:Maths>
    )
    
    add_custom_command(
            TARGET Maths POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E copy
            ${Mingw_Path}/libwinpthread-1.dll
            $<TARGET_FILE_DIR:Maths>
    )