【问题标题】:How to copy OpenCV DLL files into cmake debug/release folder?如何将 OpenCV DLL 文件复制到 cmake 调试/发布文件夹中?
【发布时间】:2018-02-22 21:06:14
【问题描述】:

我要复制

C:\opencv-3.4.0.-opencl\bin\Debug\*.dll => myproj\build\bin\Debug\*.dll

还有

C:\opencv-3.4.0.-opencl\bin\Release\*.dll => myproj\build\bin\Release\*.dll

如果可能的话,我想在一个构建/发布命令中完成。

【问题讨论】:

  • 谢谢,打印错误已修复。
  • 我想构建后自定义命令 (doc) 是一种方法。
  • 如果目标是能够在无需手动复制库的情况下进行调试,我采用了稍微不同的方法。我有一个调用CONFIGURE_FILE 来生成${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.vcxproj.user 的函数,它设置调试属性,例如命令参数、工作目录和环境。对于环境,它将 DLL 的位置添加到 PATH 变量中。
  • that answer 到建议为重复的问题的方法有什么问题?

标签: opencv visual-c++ cmake


【解决方案1】:

您可以在构建后命令上复制文件。可以在here找到逐步教程。

基本概念是您可以使用批处理文件命令,作为 Visual Studio 中的构建后步骤,基本上可以在构建时执行任何您想做的事情。

更多教程可以在here找到

对于 CMAKE

最简单的方法是遵循上面的建议,但不要将其放在 VS 的后期构建选项中,只需添加 custom command

【讨论】:

  • 恕我直言,问题是关于使用 CMake 自动配置它,而不是每次生成新解决方案时都必须单击 MSVS GUI。您的答案或您链接到的教程中没有任何内容可以解决此问题。
  • 没错,我说的是VisualC++标签,假设是Visual Studio。生病添加一个 cmake 解决方案
【解决方案2】:

您可以尝试使用CPack 一次性处理多个配置。请参阅以下教程中的示例

https://cmake.org/cmake/help/latest/guide/tutorial/index.html#packaging-debug-and-release-step-12

默认情况下,CMake 的模型是构建目录只包含一个 单一配置,无论是 Debug、Release、MinSizeRel 还是 RelWithDebInfo。但是,可以将 CPack 设置为捆绑 多个构建目录并构建一个包含 同一个项目的多个配置。

那么你需要对每个配置使用以下任一方法来复制你需要的文件

配置文件
https://cmake.org/cmake/help/latest/command/configure_file.html

add_custom_command

https://cmake.org/cmake/help/latest/command/add_custom_command.html

这是一个来自reddit的例子

https://www.reddit.com/r/cmake/comments/gmewhu/copy_one_file_in_src_directory_to_build_directory/

# Copy <filename> to build directory
set(copy_source_dir "${CMAKE_SOURCE_DIR}/src/<path>")
set(copy_dest_dir "${CMAKE_BINARY_DIR}/Build/<path>/$<CONFIG>")
set(copy_file_name "<filename>")
add_custom_command(
    TARGET ${PROJECT_NAME} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E make_directory ${copy_dest_dir}
)
add_custom_command(
    TARGET ${PROJECT_NAME} POST_BUILD 
    COMMAND ${CMAKE_COMMAND} -E copy "${copy_source_dir}/${copy_file_name}" "${copy_dest_dir}/${copy_file_name}"
    COMMENT "Copying ${copy_file_name} to build directory"
)

【讨论】:

    猜你喜欢
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多