链接图书馆和自动工具的正确方法
我需要链接libmagic到我的项目,它是用autotools构建的。链接图书馆和自动工具的正确方法
我目前的解决办法是:LIBS+="-lmagic"
在configure.ac
,但我认为更合适的方式,这将使用在Makefile.am configure.ac
和LDADD = @[email protected]
PKG_CHECK_MODULES
宏,不幸的是这是行不通的实现。
这里就是我从./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的, 任何想法得到些什么?
我认为一个更合适的方式来实现,这将在
configure.ac
使用PKG_CHECK_MODULES
宏[...]
只有当你真正拥有一个libmagic pkg配置数据文件,甚至然后there is some controversy around PKG_CHECK_MODULES
。据我所知,the implementation you are probably using不提供pkg-config文件。当然,你可以自己写,但是这会破坏目的。
如果您要依赖标题和库安装在其中一个标准位置 - 这是常规的和非常合理的 - 那么配置该构建的更习惯方式将是测试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
。
通过提供configure
选项,用户可以指定头和库的替代位置,但这似乎不是您要查找的内容,您可能会更喜欢它,而且看起来好像它会过度libmagic。
您需要libmagic的pkgconfig文件。如果PKG_CONFIG_PATH中没有magic.pc,则必须编写自定义autoconf宏来设置MAGIC_LIBS。