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

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

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

【问题讨论】:

    标签: opencv cmake


    【解决方案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 包含目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多