使用CMake

时间:2015-04-30 07:01:04

标签: c++ opencv visual-c++ cmake dynamically-generated

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

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

    1. install解决方案的功能是什么?
    2. install解决方案生成的库与binlib文件夹中的库有何不同?
    3. 为什么在构建install解决方案时未构建ALL_BUILD解决方案

1 个答案:

答案 0 :(得分:3)

  
      
  1. install解决方案的功能是什么?
  2.   

它将构建输出打包/收集到一组可移植的库和标题中,您知道它们可以在您的电脑或其他机器中移动。

  
      
  1. install解决方案生成的库与binlib文件夹中的库有何不同?
  2.   

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

  
      
  1. 为什么在构建install解决方案时未构建ALL_BUILD解决方案
  2.   

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