我的项目需要依赖libxml2
am使用autotools检查依赖关系&安装相同。我声明在configure.ac
echo -n "checking if libxml2 is present... "
PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6.19],
[echo "yes (features requiring libxml2 enabled)" AC_DEFINE(HAVE_LIB_XML, 1, [define if libxml2 is present])],
[echo "no"] )
宏在GNU/Linux
中可以正常工作。
但不知怎的,它在Solaris
失败并出现以下错误
checking if libxml2 is present... ./configure: line 11586: syntax error near unexpected token `LIBXML2,'
./configure: line 11586: `PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.6.19,'
用Google搜索解决方案,其中大多数人都抱怨pkg-config
没有安装。但是在我的测试机器中实际安装了它,通过执行以下命令来检查它。
bash-3.00# pkg-config libxml-2.0 --modversion
2.6.23
欢迎提出一些建议。
答案 0 :(得分:8)
PKG_CHECK_MODULES
宏似乎没有正确扩展。安装pkg-config
后,是否安装了pkg.m4
(在/usr/share/aclocal
之类的地方)?如果是,请尝试再次运行aclocal
(如果您在-I m4
子目录中有自定义m4代码,可以使用m4
,然后运行autoconf
。
如果这不起作用且安装了pkg.m4
,请尝试运行autoreconf -f
(也许autoreconf -i -f
)。
如果这不起作用,则需要将pkg.m4
复制到包的目录中。通常这是m4
子目录。在ACLOCAL_AMFLAGS = -I m4
中设置ACLOCAL_AMFLAGS = -I m4 --install
(或Makefile.am
)(如果您正在使用automake),在AC_CONFIG_MACRO_DIR([m4])
中设置configure.ac
。然后运行aclocal -I m4
和autoconf
以及./configure
。