8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何使用 CMake 将 DLL 文件复制到与可执行文件相同的文件夹中?

anthony sottile 2月前

135 0

我们使用 CMake 在 SVN 中生成源代码的 Visual Studio 文件。现在我的工具需要一些 DLL 文件与可执行文件位于同一文件夹中。DLL 文件位于旁边的文件夹中...

我们使用 CMake 在 SVN 中生成源代码的 Visual Studio 文件。现在我的工具需要一些 DLL 文件与可执行文件位于同一文件夹中。DLL 文件位于源代码旁边的文件夹中。

我怎样才能更改 CMakeLists.txt 以使生成的 Visual Studio 项目已经在发布/调试文件夹中拥有特定的 DLL 文件或者在编译时复制它们?

帖子版权声明 1、本帖标题:如何使用 CMake 将 DLL 文件复制到与可执行文件相同的文件夹中?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由anthony sottile在本站《visual-studio》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 今天,当我尝试为我的程序制作 Windows 版本时,我遇到了这个问题。由于所有这些答案都不能让我满意,所以我最终自己做了一些研究。主要有三个问题:

    • p1

    • p2

    • p3

    在浏览一些 CMake 手册和 github 上的一些多平台项目后,我找到了这个解决方案:

    使用“IMPORTED”属性将您的库声明为目标,引用其调试和发布.lib 和.dll 文件。

    add_library(sdl2 SHARED IMPORTED GLOBAL)
    set_property(TARGET sdl2 PROPERTY IMPORTED_IMPLIB_RELEASE "${SDL_ROOT_PATH}/lib/SDL2.lib")
    set_property(TARGET sdl2 PROPERTY IMPORTED_LOCATION_RELEASE "${SDL_ROOT_PATH}/bin/SDL2.dll")
    set_property(TARGET sdl2 PROPERTY IMPORTED_IMPLIB_DEBUG "${SDL_ROOT_PATH}/lib/SDL2d.lib")
    set_property(TARGET sdl2 PROPERTY IMPORTED_LOCATION_DEBUG "${SDL_ROOT_PATH}/bin/SDL2d.dll")
    

    照常将此目标与您的项目链接

    target_link_libraries(YourProg sdl2 ...)
    

    如果 dll 文件自上次构建后发生了某种改变,则进行自定义构建步骤以将其复制到目标位置

    add_custom_command ( TARGET YourProg POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_if_different
        $<TARGET_FILE:sdl2> $<TARGET_FILE_DIR:YourProg>
    )
    
返回
作者最近主题: