我需要将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有关, 任何想法?
答案 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。