配置CmakeLists.txt以避免复制dll

问题描述 投票:0回答:1

我目前正在用 C++ 试验 OpenCV 库。我已经设置了 MinGW、CMake,并且正在 VSCode 中进行编码。但是,我遇到了一个不便之处,每次我想运行可执行程序(.exe)时,我都需要手动将所有必需的 DLL 文件复制到项目目录中。是否有配置或设置可以帮助我避免不断复制粘贴 DLL?

在CMakeLists.txt中,我已经设置了:

set(OpenCV_DIR Path_to_opencv_lib)
find_package( OpenCV REQUIRED )

我不清楚为什么我们首先需要将 DLL 复制到当前项目目录中。

任何有关这些问题的帮助将不胜感激。

c++ opencv visual-studio-code cmake
1个回答
0
投票

我假设 DLL 当前位于您的 OpenCV 安装文件夹中。

当您运行 exe 时,它将尝试从当前文件夹或从 PATH 环境变量中列出的文件夹

加载 DLL。

因此你有2个选择:

  1. 将 DLLs 文件夹添加到您的

    PATH

     环境变量中。在这种情况下,它们不会被复制,而是直接从原始文件夹加载。

  2. 添加 CMake 构建后命令,将 DLL 复制到目标文件夹(exe 所在的位置)。完整的文档位于

    here。 此类命令的示例如下:

    add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND copy <DLLs folder>/*.dll ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
    
    
© www.soinside.com 2019 - 2024. All rights reserved.