在AutoMake宏里面用pkg-config

在AutoMake宏里面用pkg-config

之前一直在找的用法, 终于被挖出来了, 兴奋~

pkg-config 能帮忙管理系统上安装的库, 比如pkg-config glib --libs --cflags, 能输出编译时候需要写到makefile里面的-Ixxx -lyyy
很多资料都在说自己写makefile的时候, 可以用这个来帮忙写包含路径, 但是在复杂一点的环境里面手写makefile简直是跟自己过不去
之前一直只好把pkg-config写进makefile.am去, 写在CFLAGS和LDFLAGS那边, 勉强算是半自动的了

本来automake可以写宏 在./configure的时候, 帮助检查系统里面的头文件, 库支持之类, 比如如果有在configure.in里面写检查libmysql, 最后的makefile会帮你加上-lmysqlclient, 但是-I不会帮你搞定

最理想的情况, 那就是我直接把pkg-config整合到automake的宏里面去, 用pkg-config来直接帮忙检查头文件和连接库, 连带编译时候的参数一并搞定

中间找了不少automake的资料, 一直没搞定, automake官方的文档里面对各个宏的解释比较简略, 而且没有实例讲解, pkg-config是另外独立的程序, 库的路径和链接都是输出在stdout的

今天终于找到了关键的用法, 之前看别人的现成项目里面检查库文件的宏, 要么是很土, 相当于手工检查, 要么是项目实在太大, 宏文件看得眼花, 没找着它检查库的地方

今天看到GNet的手册, 终于看到一个在automake里面能一条龙做完的实例了
http://www.gnetlibrary.org/docs/gnet-developers.html

PKG_CHECK_MODULES(GNET, gnet > 2.0.0,
[LIBS="$LIBS $GNET_LIBS" CFLAGS="$CFLAGS $GNET_CFLAGS"],
AC_MSG_ERROR(Cannot find GNet: Is gnet-config in path?))

GNET是一个名字, 可以改成其他的, gnet > 2.0.0 是pkg-config能接受的检查语法, 关键点在后面的$GNET_LIBS和$GNET_CFLAGS
这两个变量把pkg-config的输出分开成头文件路径参数和链接库参数了, 这里的GNET就是前面定的那个名字

有了这个, 其他的什么AC_CHECK_LIBS AC_HEADER AC_CHECK_FUNCS 全部都可以退休了, 哇哈哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值