- cmake中使用PkgConfig去查找库的方法
1)首先设置好PKG_CONFIG_PATH,是一个目录list
2)其次使用类似下面一段代码
# 引入 PkgConfig 模块
find_package(PkgConfig REQUIRED)
# 查找并解析 .pc 文件
pkg_check_modules(<PREFIX> [REQUIRED] [IMPORTED_TARGETS] <package1> [<package2>...])
参数说明
<PREFIX>:生成变量前缀(如 AVFILTER)
REQUIRED:若未找到包则报错终止构建
IMPORTED_TARGETS:生成导入目标(推荐使用)12
<package>:需查找的 .pc 文件名(如 libavfilter)
解析.pc文件内容,CMake会解析该文件并生成以下变量
编译选项:<PREFIX>_CFLAGS 或 <PREFIX>_CFLAGS_OTHER
链接路径:<PREFIX>_LIBRARY_DIRS
链接库名称:<PREFIX>_LIBRARIES
头文件路径:<PREFIX>_INCLUDE_DIRS
使用 IMPORTED_TARGETS 选项生成导入目标,简化依赖管理
pkg_check_modules(AVFILTER IMPORTED_TARGETS libavfilter)
# 将依赖自动传递到目标
target_link_libraries(my_target PRIVATE PkgConfig::AVFILTER)
下面是一个简单的pc文件的例子
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: libfoo
Description: Example library
Version: 1.0.0
Libs: -L${libdir} -lfoo
Cflags: -I${includedir}