将库与autotools

时间:2017-03-21 13:27:27

标签: autotools autoconf automake pkg-config

我需要将libmagic链接到使用autotools构建的项目。

我当前的解决方案是:LIBS+="-lmagic"

中的configure.ac

但我认为更实际的方法是使用PKG_CHECK_MODULES中的configure.ac宏和Makefile.am中的LDADD = @MAGIC_LIBS@,遗憾的是这不起作用。

这是我从./configure

获得的内容
configure: error: Package requirements (magic) were not met:

No package 'magic' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

我认为这与pkg-config中缺少libmagic有关, 任何想法?

2 个答案:

答案 0 :(得分:3)

  

我认为实现这一目标的更恰当的方法是在PKG_CHECK_MODULES中使用configure.ac宏[...]

只有你实际拥有libmagic的pkg-config数据文件,甚至是there is some controversy around PKG_CHECK_MODULES。据我所知,the implementation you are probably using没有提供pkg-config文件。当然,你可以写自己的,但那会破坏目的。

如果您依赖于标准位置之一安装的标头和库 - 这是传统的且非常合理 - 那么配置构建的更惯用的方法是{{ 1}}测试他们的存在。例如,

configure

请注意AC_CHECK_HEADER([magic.h], [], [ AC_MSG_ERROR([required header magic.h not found]) ]) AC_SEARCH_LIBS([magic_open], [magic], [], [ AC_MSG_ERROR([required library libmagic not found]) ]) 会自动将AC_SEARCH_LIBS()添加到-lmagic(如果找到)。

通过提供LIBS选项,用户可以为标题和库指定替代位置,您可以获得更高的感觉,但这似乎并不是您正在寻找的内容,而且似乎对于libmagic来说会有点过分。

答案 1 :(得分:1)

你需要一个libmagic的pkgconfig文件。如果PKG_CONFIG_PATH中没有magic.pc,则必须编写自定义autoconf宏来设置MAGIC_LIBS。