前面一篇主要讲了c++项目怎么在本地配置opencv过程,这种方式缺点就是只能在开发着本地环境编译,换台电脑就会出现环境配置问题。接下来主要讲解,使用cmake编译,生成一个依赖opencv的c++动态库,但是对opencv是静态连接,即运行时不需要将opencv的库拷贝至运行环境中。
其中最重要是cmakelist文件的编写,下面是一个简单的依赖opencv生成的动态库dll,应该是比较简单的cmakelist文件
cmake_minimum_required(VERSION 3.2)#cmake最低版本3.2
set(projectName AutoSoftLibrary)#设置工程名称变量
project(${projectName})
include(FindOpenMP)
if(OPENMP_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
else(OPENMP_FOUND)
message("ERROR: OpenMP could not be found.")
endif(OPENMP_FOUND)
find_package(OpenCV REQUIRED) #配置opencv环境,通过OpenCV_DIR变量寻找opencvConfig.cmake文件,以此找到包,并赋值各库相关变量,前提是开发环境中安装了opencv并且配置了环境变量
include_directories(${OpenCV_INCLUDE_DIRS})#连接opencv库,将opencv头文件目录包含进来
set(srcs
AutoSoft.cpp
)#设置源文件变量
add_library(${projectName} SHARED ${srcs})#添加从srcs列表列出的文件构建而来的目标为projectName的动态(SHARED)库,STATIC为静态库
target_link_libraries( ${projectName} ${OpenCV_LIBS})#链接opencv库,opencv_libs为代表库可执行文件的变量,$为取出变量中的值
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")#运行库多线程
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")#多线程调试
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)