使用 Cmake 配置 c++ OpenCV 项目

Posted

技术标签:

【中文标题】使用 Cmake 配置 c++ OpenCV 项目【英文标题】:Configuring an c++ OpenCV project with Cmake 【发布时间】:2022-01-06 16:57:27 【问题描述】:

我认为这是创建使用 OpenCV 库的项目的基本步骤,因此您无需手动包含所有库。没有关于这个主题的详细信息,至少对于一个只想尽快使用 OpenCV 的新手来说,所以:

使用 Cmake 创建多平台 c++ OpenCV 的最简单且可扩展的方法是什么?

【问题讨论】:

【参考方案1】:

我正在使用 opencv3.0 和 cmake3.8, 下面的配置对我有用!

######## A simple cmakelists.txt file for OpenCV() #############  
cmake_minimum_required(VERSION 2.8)                            
PROJECT(word)                                         

FIND_PACKAGE( OpenCV REQUIRED )                              
INCLUDE_DIRECTORIES( $OpenCV_INCLUDE_DIRS )

ADD_EXECUTABLE(word main.c)                         
TARGET_LINK_LIBRARIES (word $OpenCV_LIBS)         
########### end ####################################  

【讨论】:

CMake >= 2.8.11 不需要调用“include_directories()”,这是唯一正确的方法。至少可以说,自我接受的答案完全具有误导性。【参考方案2】:

首先:创建一个文件夹Project,其中包含两个子文件夹srcinclude,以及一个名为的文件>CMakeLists.txt.

第二:把你的cpp放在src文件夹里,把你的头文件放在include文件夹里。

第三:您的 CMakeLists.txt 应如下所示:

cmake_minimum_required(VERSION 2.8) 
PROJECT (name)
find_package(OpenCV REQUIRED )
set( NAME_SRC
    src/main.cpp    
)

set( NAME_HEADERS       
     include/header.h
)

INCLUDE_DIRECTORIES( $CMAKE_CURRENT_SOURCE_DIR/include )
link_directories( $CMAKE_BINARY_DIR/bin)
set(EXECUTABLE_OUTPUT_PATH $CMAKE_BINARY_DIR/bin)
add_executable( name $NAME_SRC $NAME_HEADERS )

target_link_libraries( sample_pcTest $OpenCV_LIBS )

第四: 打开 CMake GUI 并选择根文件夹作为输入,并为输出创建一个构建文件夹。点击configure,然后generate,选择生成器(VisualStudio, Eclipse, ...)

【讨论】:

请不要推荐使用“link_directories”——取而代之的是,将完整路径名提供给作为 target_link_libraries 参数所需的任何库。 link_directories (cmake.org/cmake/help/v2.8.10/…) 的文档说“请注意,这个命令很少需要。” 您可以省略 NAME_HEADERS -- CMake 扫描源文件以确定头文件依赖关系。 @DLRdave 在 Windows 中,您将需要 link_directories($OpenCV_LIB_DIR),因为在 $OpenCV_LIBS 中返回的值仅包括库名称(不是完整路径)。如果您希望$OpenCV_LIBS 实际包含库路径,那么您将需要find_package(OpenCV REQUIRED core imgproc ...)。静态构建时,这意味着在 find_package 调用中添加每个 opencv 模块。 有趣......感谢您提供的信息,我没有意识到这一点。不过,这也有违常理。 OpenCV find_package 调用应该返回变量中库的完整路径名。大多数其他 find_package 调用都会产生库的完整路径名。 这个答案不完整,不起作用。它甚至不引用 OpenCV 包含目录。

以上是关于使用 Cmake 配置 c++ OpenCV 项目的主要内容,如果未能解决你的问题,请参考以下文章

CMake 问题 - 找不到“OpenCV”提供的包配置文件

如何知道 CMake 找到的库版本?

Android OpenCVVisual Studio 创建支持 OpenCV 库的 CMake 工程 ② ( VS 中创建 CMake 工程 | CMake 工程中配置 OpenCV 头文件 )

opencv+Qt+cmake安装配置

OpenCV VS 2010 C++ CMake

CMake - OpenCV - 找不到 -lDisplayImage