Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将OpenCV DLL文件复制到cmake调试/发布文件夹中?_Opencv_Visual C++_Cmake - Fatal编程技术网

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

如何将OpenCV DLL文件复制到cmake调试/发布文件夹中?,opencv,visual-c++,cmake,Opencv,Visual C++,Cmake,我需要复印 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 如果可能的话,我想在一个生成/发布命令中完成它。您可以在生成后命令中复制文件。可以找到一个单步教程 基本概念是,您可以使用批处理文件命令,作为VisualStudio中的后期构建步骤,在构建

我需要复印

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


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

您可以在生成后命令中复制文件。可以找到一个单步教程

基本概念是,您可以使用批处理文件命令,作为VisualStudio中的后期构建步骤,在构建过程中基本上执行任何您想要的操作

可以找到进一步的教程

用于CMAKE


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

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

默认情况下,CMake的模型是构建目录只包含 单一配置,无论是调试、发布、MinSizeRel还是 RelWithDebInfo。但是,可以将CPack设置为bundle 多个生成目录并构造包含 同一项目的多个配置

然后,您需要为每个配置使用以下任一方法来复制所需的文件

配置_文件

添加自定义命令

下面是reddit的一个例子

#复制到生成目录
设置(复制源目录“${CMAKE源目录}/src/”)
设置(复制目标目录“${CMAKE\u BINARY\u dir}/Build/$”)
设置(复制文件名“”)
添加自定义命令(
目标${PROJECT\u NAME}POST\u BUILD
命令${CMAKE_COMMAND}-E make_目录${copy_dest_dir}
)
添加自定义命令(
目标${PROJECT\u NAME}POST\u BUILD
命令${CMAKE_COMMAND}-E copy“${copy_source_dir}/${copy_file_name}”${copy_dest_dir}/${copy_file_name}”
注释“正在将${copy\u file\u name}复制到生成目录”
)

Thanx,已修复打印错误。我想编译后自定义命令()是一种方法。如果目标是能够在不必手动复制libs的情况下进行调试,我会采取稍微不同的方法。我有一个函数,它调用
CONFIGURE_FILE
生成
${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.vcxproj.user
,设置调试属性,例如命令参数、工作目录和环境。对于环境,它将DLL的位置预先添加到
PATH
变量。从到问题的处理方法可能存在重复问题,建议为重复?问题是关于如何使用CMake自动配置的,而不是每次生成新解决方案时都必须单击MSVS GUI。你的答案或你链接到的教程中没有提到这一点。没错,我说的是VisualC++标记和假定的visual studio。我将添加一个cmake解决方案
# 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"
)