使用 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,其中包含两个子文件夹src和include,以及一个名为的文件>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”提供的包配置文件
Android OpenCVVisual Studio 创建支持 OpenCV 库的 CMake 工程 ② ( VS 中创建 CMake 工程 | CMake 工程中配置 OpenCV 头文件 )