1 2

如何编写CMakeLists.txt,并且使用pkg-config

这里记录一下如何编写CMakeLists.txt

本篇blog记录如何在CMakeLists.txt中使用pkg-config

首先确定cmake版本

cmake_minimum_required(VERSION 3.16)

项目名称

project(Axis)

使用pkg-config,REQUIRED表示必须要这个包

find_package(PkgConfig REQUIRED)

使用pkg-config找到包

pkg_search_module(GST REQUIRED gstreamer-1.0)
pkg_search_module(OPENCV REQUIRED opencv4)
pkg_search_module(GSTAPP REQUIRED gstreamer-app-1.0)
pkg_search_module(GST REQUIRED glib-2.0)
pkg_search_module(GST REQUIRED gobject-2.0)

!注意

  • 如果没有.pc文件,自己参照别的.pc文件创建,或者直接在target_link_libraries 和 target_include_directories定义
  • 如果.pc文件路径不在pkg-config搜寻路径下,例如我的opencv4.pc在/usr/local/opencv4/lib/pkgconfig目录下(可以使用sudo find / -name "opencv4.pc"来找到目录),可以在~/.bashrc中添加:export PKG_CONFIG_PATH=/usr/local/opencv4/lib/pkgconfig
  • pkg_search_module内部两个参数,第一个是后面包的代号,注意如果.pc文件在不同路径下的话需要使用不同的代号

添加头文件目录

include_directories(${GST_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS} ${GSTAPP_INCLUDE_DIRS})

如果lib文件没有装在正常目录下,使用如下代码

LINK_DIRECTORIES(/usr/local/opencv4/lib)

编译文件,如果是生成库的话使用add_libraries

add_executable(saidiAxis saidiAxis.cpp)

链接库文件

target_link_libraries(saidiAxis ${GST_LIBRARIES} ${OPENCV_LIBRARIES} ${GSTAPP_LIBRARIES})
target_include_directories(saidiAxis PRIVATE ${GST_INCLUDE_DIRS} ${OPENCV_INCLUDE_DIRS} ${GSTAPP_INCLUDE_DIRS})

消息提示

message(STATUS "GST_LIBS ${OPENCV_LIBRARIES}")
posted @ 2022-07-12 20:37  啦啦啦小石头  阅读(434)  评论(0编辑  收藏  举报