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

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

anthony sottile 2月前

127 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)
  • 我会用来 add_custom_command 实现这一点 cmake -E copy_if_different... 。如需了解详细信息,请运行

    cmake --help-command add_custom_command
    cmake -E
    


    因此,就您而言,如果您具有以下目录结构:

    /CMakeLists.txt
    /src
    /libs/test.dll
    

    并且该命令适用的 CMake 目标是 MyTest ,那么您可以将以下内容添加到您的 CMakeLists.txt 中:

    add_custom_command(TARGET MyTest POST_BUILD        # Adds a post-build event to MyTest
        COMMAND ${CMAKE_COMMAND} -E copy_if_different  # which executes "cmake - E copy_if_different..."
            "${PROJECT_SOURCE_DIR}/libs/test.dll"      # <--this is in-file
            $<TARGET_FILE_DIR:MyTest>)                 # <--this is out-file path
    


    如果您只想 /libs/ 复制目录的全部内容,请使用 cmake -E copy_directory

    add_custom_command(TARGET MyTest POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_directory
            "${PROJECT_SOURCE_DIR}/libs"
            $<TARGET_FILE_DIR:MyTest>)
    


    如果您需要根据配置(例如,Release、Debug)复制不同的 dll,那么您可以将这些 dll 放在以相应配置命名的子目录中: /libs/Release /libs/Debug 。然后,您需要在调用中将配置类型注入到 dll 的路径中 add_custom_command ,如下所示:

    add_custom_command(TARGET MyTest POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_directory
            "${PROJECT_SOURCE_DIR}/libs/$<CONFIGURATION>"
            $<TARGET_FILE_DIR:MyTest>)
    
返回
作者最近主题: