使用Cmake配置c ++ OpenCV项目

Jav*_*ock 29 opencv cmake

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

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

Jav*_*ock 32

首先:创建一个包含两个子文件夹srcinclude的文件夹Project,以及一个名为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} )
Run Code Online (Sandbox Code Playgroud)

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

  • 请不要建议使用"link_directories" - 而是将完整路径名称作为target_link_libraries的参数所需的任何库.link_directories的文档(http://cmake.org/cmake/help/v2.8.10/cmake.html#command:link_directories)说"请注意,此命令很少需要." (3认同)
  • @DLRdave 在 Windows 中,您将需要 `link_directories(${OpenCV_LIB_DIR})`,因为 `${OpenCV_LIBS}` 中返回的值仅包含库名称(而不是完整路径)。如果您希望 `${OpenCV_LIBS}` 实际包含库路径,那么您将需要 `find_package(OpenCV REQUIRED core imgproc ...)`。静态构建时,这意味着在 find_package 调用中添加每个 opencv 模块。 (2认同)

姚嘉辉*_*姚嘉辉 9

我正在使用opencv3.0和cmake3.8,下面的配置为我工作!

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

FIND_PACKAGE( OpenCV REQUIRED )                              # ???????OpenCV?????  
INCLUDE_DIRECTORIES( ${OpenCV_INCLUDE_DIRS} )

ADD_EXECUTABLE(word main.c)                         # ???????????.c??cpp????  
TARGET_LINK_LIBRARIES (word ${OpenCV_LIBS})         # ??????????!???????  
########### end ####################################  
Run Code Online (Sandbox Code Playgroud)

  • 除了'include_directories()',CMake> = 2.8.11不需要调用这是唯一正确的方法.自我接受的答案至少可以说是误导. (3认同)