cpanm使用自定义库和cflags

时间:2017-02-27 11:30:02

标签: perl cpan xml-libxml cpanm

在我的Mac OS X计算机上Darwin maci 15.6.0 Darwin Kernel Version 15.6.0

我在以下自定义目录

中安装了libxml2和libxslt

/usr/local/MyLibs/libxml2-2.9.2

和libxslt

/usr/local/MyLibs/libxslt-1.1.29

现在我想使用这些库来构建我的CPANM模块XML :: LibXSLT。

This告诉我,我可以使用--configure-args(它仍然是实验性的)。所以我做了类似的事情,

cpanm http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXSLT-1.94.tar.gz --configure-args="--cflags=-I/usr/local/libxslt-1.1.29/include -I/usr/include/libxml2 -I/usr/local/MyLibs/libxml2-2.9.2/include/libxml2 --libs=-L/usr/local/libxslt-1.1.29/lib -lxslt -lxml2 -lz -lpthread -licucore -lm -L/usr/local/MyLibs/libxml2-2.9.2/lib -lxml2 -lz -lpthread -liconv -lm" --force

但是,构建日志表明它没有使用我的自定义位置中安装的库。

我有什么不正确的事吗?

2 个答案:

答案 0 :(得分:1)

我认为您在--cflags参数周围缺少引号(将多个以空格分隔的参数组合在一起是必需的):

--configure-args="--cflags='-I/usr/local/libxslt-1.1.29/include -I/usr/include/libxml2 -I/usr/local/MyLibs/libxml2-2.9.2/include/libxml2'"

但是--cflags--libs只是cpanm文档中的示例,甚至可能无法被发行版的Makefile.PL识别。另一个答案指出,用于XML :: LibXSLT的参数为INC="…"LIBS="…";我认为将这些内容提供给cpanm的--configure-args应该可以:

cpanm --configure-args="INC='…' LIBS='…'"

答案 1 :(得分:0)

来自发行版的README,

  

Makefile.PL尝试确定正确的编译器和链接器   使用pkg-config和它的库依赖项的标志   XSLT的配置。如果失败,您可以覆盖像这样的值

perl Makefile.PL INC="..." LIBS="..."
     

其中INC包含编译器的标志(例如-I / some_path / include等),LIBS包含链接器标志(例如-L / some_path / lib -llibsomething ...)。

放弃cpanm并自行安装模块可能更简单。

curl -L -o - http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXSLT-1.95.tar.gz | tar xz
cd XML-LibXSLT-1.95
perl Makefile.PL INC="..." LIBS="..."
make test
make install