对Using OpenCV with gcc and CMake的补充

https://docs.opencv.org/4.5.5/db/df5/tutorial_linux_gcc_cmake.html

写的已经不错,我补充点,让教程更便捷。

 

opencv源码编译

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/xxx/cv ..

make

make install

编译好的头文件和库就都安装到 /home/xxx 目录下的cv文件夹了。主要是不想污染 /lib 

 

cmake list写法

官方教程里用了

find_package( OpenCV REQUIRED )   配置有点麻烦。

 

我是这么写的:

/home/xxx/opencv/build 是我编译opencv的地方

1
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
cmake_minimum_required(VERSION 3.7)
 
project(cv-test VERSION 0.1.0)
 
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
 
file(GLOB SOURCE_FILES "*.cpp")
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
  
set(OpenCV_DIR /home/xxx/opencv/build)
 
FIND_PACKAGE(OpenCV)
 
IF (${OpenCV_FOUND})
    MESSAGE(STATUS "Found OPENCV.")
ELSE (${OpenCV_FOUND})
    MESSAGE(STATUS "Could not locate opencv. where u install opencv lib?")
ENDIF (${OpenCV_FOUND})
 
IF (${OpenCV_FOUND})
    INCLUDE_DIRECTORIES( ${OpenCV_INCLUDE_DIRS} )
ENDIF (${OpenCV_FOUND})
 
IF (${OpenCV_FOUND})
    target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
ENDIF (${OpenCV_FOUND})
 
 
set(CMAKE_BUILD_TYPE "Debug")
# set(CMAKE_BUILD_TYPE "Release")
 
if( CMAKE_BUILD_TYPE STREQUAL "Debug" )
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g -Wall -Wno-unused-variable -pthread")
    MESSAGE(STATUS "Debug")
else( CMAKE_BUILD_TYPE STREQUAL "Debug" )
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -pthread -fopenmp")
    MESSAGE(STATUS "Release")
endif( CMAKE_BUILD_TYPE STREQUAL "Debug" )

  

之前用过更低级但是简单的写法:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cmake_minimum_required(VERSION 2.8)
 
project( test00 )
 
include_directories( /home/xxx/cv/include/opencv4 } )
 
add_executable( test00 main.cpp arrowedline2.cpp )
 
target_link_libraries(
    test00
    /home/xxx/cv/lib/libopencv_core.so
    /home/xxx/cv/lib/libopencv_imgproc.so
    /home/xxx/cv/lib/libopencv_highgui.so
    /home/xxx/cv/lib/libopencv_imgcodecs.so
)
 
set(CMAKE_BUILD_TYPE "Release")
 
if( CMAKE_BUILD_TYPE STREQUAL "Debug" )
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g -Wall -Wno-unused-variable -pthread")
else( CMAKE_BUILD_TYPE STREQUAL "Debug" )
        set(CMAKE_BUILD_TYPE "Release")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -pthread -fopenmp")
endif( CMAKE_BUILD_TYPE STREQUAL "Debug" )
 
message("Build Type:"${CMAKE_BUILD_TYPE} ${CMAKE_CXX_FLAGS})

  

 

set(CMAKE_BUILD_TYPE "Release") 之后的部分不重要,可以全部去掉。

其他的按照官方教程走,没问题

posted @   园友1683564  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示