澄清使用 CMake 生成 OpenCV 库时的步骤

Clarification of steps while generating of OpenCV libraries using CMake

我使用在线教程使用 CMake 生成了 OpenCV 库几次,尽管没有完全理解这个过程。这是我遵循的过程

  1. 配置 CMake 以构建 OpenCV 二进制文件(例如,使用 QT、TBB,不使用 CUDA、OpenCL 等)
  2. 使用 CMake 生成二​​进制文件
  3. 生成二进制文件的文件夹有许多 .sln 个文件。我为调试和发布配置打开文件 OpenCV.sln 和 运行 项目 ALL_BUILD
  4. 创建了一个新文件夹。 bin 其中包含用于发布和调试版本的库(.lib.dll
  5. (可选)有时出于好奇,我还构建了名为 INSTALL 的项目(在同一解决方案中)。我注意到它创建了另一个文件夹,其中包含与 OpenCV 包附带的预构建库几乎相同模式的库文件。有趣的是,如果我 link 使用 install 文件夹或 bin/lib 文件夹中的库,我的 MSVC 或 Qt 程序同样运行良好。

我的问题是

  1. install 解决方案的功能是什么?
  2. install 解决方案生成的库与 binlib 文件夹中的库有何不同?
  3. 为什么构建ALL_BUILD方案时没有构建install方案
  1. What is the function of the install solution?

它 packages/collects 构建输出到一组可移植的库和 headers,你知道你可以在你的 pc 中移动,或者到另一台机器。

  1. How are the libraries generated by the install solution different from the ones found in the bin and lib folders?

他们不是。您可能首先构建了共享库,然后(通过使用 cmake 重新配置)静态库,但是目标安装只安装了您当前选择的库(在您的 cmake-gui 中?)

  1. Why is the install solution not built when the ALL_BUILD solution is built

install 是 cmake 的特殊目标。事实上,默认情况下 install 触发 all 并且仅在 all 成功终止时才真正执行,但反之亦然。