CMAKE查找库:find_package和pkg_check_moduls的区别

本文详细介绍了CMake中查找库的两种方式:find_package和pkg_check_modules。find_package用于处理库的查找问题,而pkg_check_modules是CMake对pkg-config的封装,简化了查找过程。pkg-config是一个帮助编译应用程序和库的工具,提供编译器和链接器所需的参数。find_package主要查找cmake目录下的配置文件,pkg_check_modules则查找pkgconfig目录下的.pc文件。两者的主要区别在于pkg_search_module依赖pkg-config,可能带来可移植性问题,而find_package是CMake自身的解决方案,可能需要手动配置查找路径。
摘要由CSDN通过智能技术生成

本文介绍 CMake 中两种查找库的方式:find_package 以及 pkg_check_modules 的用法与区别。

find_package

如果编译软件使用了外部库,事先并不知道它的头文件和链接库的位置,得在编译和链接命令中加上包含它们的查找路径,CMake 使用 find_package 命令来解决这个问题。

FIND_PACKAGE( <name> [version] [EXACT] [QUIET] [NO_MODULE] [ [ REQUIRED | COMPONENTS ] [ componets... ] ] )
这条命令执行后,CMake 会到变量CMAKE_MODULE_PATH 指示的目录下查找文件 Findname.cmake 并执行;
只要找到包,就会定义下面这些变量(都在 Findname.cmake 文件中设置):
<NAME>_FOUND
<NAME>_INCLUDE_DIRS or <NAME>_INCLUDES
<NAME>_LIBRARIES or <NAME>_LIBRARIES or <NAME>_LIBS
<NAME>_DEFINITIONS
要使用库name,我们在顶层目录中的 CMakeLists.txt 文件中,检查变量**NAME_FOUND** 来确定包是否被找到(大部分包的这些变量中的包名是全大写的,有些包则使用包的实际大小写)
如果找到这个包,我们用**NAME_INCLUDE_DIRS**调用 include
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值