如何将OpenCV DLL文件复制到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如何将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中的后期构建步骤,在构建
如果可能的话,我想在一个生成/发布命令中完成它。您可以在生成后命令中复制文件。可以找到一个单步教程 基本概念是,您可以使用批处理文件命令,作为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"
)