cpanm 使用自定义库和 cflags
cpanm use custom libs and cflags
在我的 mac OS X machine 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
但是,构建日志显示它没有使用安装在我的自定义位置的库。
我有没有做错什么?
来自发行版的 README、
The Makefile.PL tries to determine the correct compiler and linker
flags for its library dependencies using pkg-config and
xslt-config. If this fails, you may override the values like this
perl Makefile.PL INC="..." LIBS="..."
where INC contains flags for the compiler (such as -I/some_path/include etc.) and LIBS contains linker flags (such as -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
我认为您在 --cflags
参数周围遗漏了引号(需要将多个 space-separated 参数组合在一起):
--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='…'"
在我的 mac OS X machine 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
但是,构建日志显示它没有使用安装在我的自定义位置的库。
我有没有做错什么?
来自发行版的 README、
The Makefile.PL tries to determine the correct compiler and linker flags for its library dependencies using pkg-config and xslt-config. If this fails, you may override the values like this
perl Makefile.PL INC="..." LIBS="..."
where INC contains flags for the compiler (such as -I/some_path/include etc.) and LIBS contains linker flags (such as -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
我认为您在 --cflags
参数周围遗漏了引号(需要将多个 space-separated 参数组合在一起):
--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='…'"