Stepan Yakovenko
Stepan Yakovenko

Reputation: 9216

How to copy OpenCV DLL files into cmake debug/release folder?

I need to copy

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

and also

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

I'd like to do it in one command for Build/Release if possible.

Upvotes: 3

Views: 1480

Answers (2)

K4M
K4M

Reputation: 952

You can try using CPack to handle multiple configuration at one go. See an example in the following tutorial

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

By default, CMake’s model is that a build directory only contains a single configuration, be it Debug, Release, MinSizeRel, or RelWithDebInfo. It is possible, however, to setup CPack to bundle multiple build directories and construct a package that contains multiple configurations of the same project.

Then you will need to use either of the following method for each configuration to copy the files you need

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

or

add_custom_command

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

Here is an example from 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"
)

Upvotes: 0

GPPK
GPPK

Reputation: 6666

You can copy files on a post-build command. A step through tutorial can be found here.

The basic concept is that you can use batch file commands, as a post-build step in Visual Studio to do basically anything you want as you build.

A further tutorial can be found here

For CMAKE

The easiest way is to follow the advice above but instead of putting it in the post-build options in VS just add a custom command

Upvotes: 2

Related Questions