2025-03-10 CMAKE使用package config

  1. 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}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容