如何编写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}")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)