《OpenCV 4计算机视觉项目实战 》 —2.4 管理依赖项

举报
华章计算机 发表于 2019/11/10 09:50:59 2019/11/10
【摘要】 本节书摘来自华章计算机《OpenCV 4计算机视觉项目实战》 一书中第二章,第2.4节,作者[西班牙]大卫·米兰·埃斯克里瓦(David Millán Escrivá)[西班牙]维尼休斯·G.门东萨(Vinícius G. Mendon。

2.4 管理依赖项

CMake具备搜索依赖项和外部库的能力,这使我们能够根据项目中的外部组件构建复杂的项目,并添加一些要求。

在本书中,最重要的依赖项自然是OpenCV,我们将把它添加到我们的所有项目中:

 image.png

现在,我们通过以下代码了解脚本的工作原理:

 image.png

第一行定义CMake的最低版本,第二行告诉CMake使用CMake的新行为,以便识别正确的数字和布尔常量,而无须使用这些名称间接引用变量。该策略是在CMake 2.8.0中引入的,当3.0.2版本中未设置此策略时,CMake会发出警告。最后一行定义项目的标题。定义项目名称后,我们必须定义需求、库和依赖项:

 image.png

这段代码搜索OpenCV依赖项。FIND_PACKAGE能够查找依赖项、所需的最低版本以及该依赖是必需的还是可选的。在这个示例脚本中,我们查找4.0.0或更高版本的OpenCV,并声明它是必需包。

FIND_PACKAGE命令包括所有OpenCV子模块,但是,也可以指定要包含在项目中的子模块,以便应用程序能够更小更快地执行。例如,如果我们只使用基本的OpenCV类型和核心功能,就可以使用以下命令:FIND_PACKAGE(OpenCV 4.0.0 REQUIRED core)。

如果CMake没有找到它,就会返回错误,并且不会阻止我们编译应用程序。MESSAGE函数在终端或CMake GUI中显示一条消息。在这个例子中,我们将这样显示OpenCV版本:

 image.png

${OpenCV_VERSION}是CMake用来存储OpenCV包版本的变量。include_directories()和link_directories()向环境中添加指定库的头文件和路径。OpenCV CMake的模块将这些数据保存在${OpenCV_INCLUDE_DIRS}和${OpenCV_LIB_DIR}变量中。并非所有平台(例如Linux)都需要这些命令行,因为这些路径通常位于环境中,但是建议使用多个OpenCV版本来选择正确的链接并包含路径。现在包含我们开发的源文件:

 image.png

最后一行创建可执行文件,并将可执行文件与OpenCV库链接,如上一节中所述。这段代码中有一个新的函数SET,该函数创建一个新变量,并向其添加我们需要的任何值。在这个例子中,我们将main.cpp值合并到SRC变量中。我们还可以在同一个变量中添加更多的值,如下面的脚本所示:

       image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。