《OpenCV 4计算机视觉项目实战 》 —2.4 管理依赖项
2.4 管理依赖项
CMake具备搜索依赖项和外部库的能力,这使我们能够根据项目中的外部组件构建复杂的项目,并添加一些要求。
在本书中,最重要的依赖项自然是OpenCV,我们将把它添加到我们的所有项目中:
现在,我们通过以下代码了解脚本的工作原理:
第一行定义CMake的最低版本,第二行告诉CMake使用CMake的新行为,以便识别正确的数字和布尔常量,而无须使用这些名称间接引用变量。该策略是在CMake 2.8.0中引入的,当3.0.2版本中未设置此策略时,CMake会发出警告。最后一行定义项目的标题。定义项目名称后,我们必须定义需求、库和依赖项:
这段代码搜索OpenCV依赖项。FIND_PACKAGE能够查找依赖项、所需的最低版本以及该依赖是必需的还是可选的。在这个示例脚本中,我们查找4.0.0或更高版本的OpenCV,并声明它是必需包。
FIND_PACKAGE命令包括所有OpenCV子模块,但是,也可以指定要包含在项目中的子模块,以便应用程序能够更小更快地执行。例如,如果我们只使用基本的OpenCV类型和核心功能,就可以使用以下命令:FIND_PACKAGE(OpenCV 4.0.0 REQUIRED core)。
如果CMake没有找到它,就会返回错误,并且不会阻止我们编译应用程序。MESSAGE函数在终端或CMake GUI中显示一条消息。在这个例子中,我们将这样显示OpenCV版本:
${OpenCV_VERSION}是CMake用来存储OpenCV包版本的变量。include_directories()和link_directories()向环境中添加指定库的头文件和路径。OpenCV CMake的模块将这些数据保存在${OpenCV_INCLUDE_DIRS}和${OpenCV_LIB_DIR}变量中。并非所有平台(例如Linux)都需要这些命令行,因为这些路径通常位于环境中,但是建议使用多个OpenCV版本来选择正确的链接并包含路径。现在包含我们开发的源文件:
最后一行创建可执行文件,并将可执行文件与OpenCV库链接,如上一节中所述。这段代码中有一个新的函数SET,该函数创建一个新变量,并向其添加我们需要的任何值。在这个例子中,我们将main.cpp值合并到SRC变量中。我们还可以在同一个变量中添加更多的值,如下面的脚本所示:
- 点赞
- 收藏
- 关注作者
评论(0)