如何将OpenCV DLL文件复制到cmake调试/发布文件夹?

时间:2018-02-22 21:06:14

标签: opencv visual-c++ cmake

我需要复制

  

C:\ opencv-3.4.0.-opencl \ bin \ Debug \ * .dll =>   的Myproj \构建\ BIN \调试\ *。DLL

以及

  

C:\ opencv-3.4.0.-opencl \ bin \ Release \ * .dll =>   的Myproj \构建\ BIN \发布\ *。DLL

如果可能,我想在一个Build / Release命令中执行此操作。

2 个答案:

答案 0 :(得分:1)

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

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

可以找到进一步的教程here

对于CMAKE

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

答案 1 :(得分:0)

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

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

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

然后,对于每种配置,您将需要使用以下两种方法之一来复制所需的文件

configure_file
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"
)