在AutoMake宏里面用pkg-config
2010-12-09 23:50
316 查看
在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 全部都可以退休了, 哇哈哈哈
相关文章推荐
- 41 pkg-config和gtk+
- pkg-config 设置
- 'pkg-config --modversion glib-2.0' returned 2.34.1, but GLIB (2.32.3)
- pkg-config
- pkg-config与ffmpeg
- 理解 pkg-config 工具
- 理解 pkg-config 工具
- 简述configure、pkg-config、pkg_config_path三者的关系
- 在web.config里面怎么设置FORMS验证:某几个页面可以匿名访问,其他页面都需要登录(转)
- 理解 pkg-config 工具
- pkg-config
- 理解 pkg-config 工具
- 从web.config里面取出数据库连接字符串
- c#代码获取web.config配置文件里面设置的 <compilation debug="true"节点的debug值
- 介绍 pkgconfig(转)
- 如何让虚拟目录里面的webconfig不继承网站的设置
- 理解 pkg-config 工具
- pkg-config
- pkg-config设置
- pkg-config的用法