如何构建一个允许在安装时链接到不同本机库的gem?

时间:2012-04-13 20:05:48

标签: ruby gem dependencies native nativelibrary

Nokogiri通过在install命令中指定库来实现这一目的:

gem install nokogiri -- --with-xml2-lib=/home/joe/builds/lib 
                    --with-xml2-include=/home/joe/builds/include/libxml2 
                    --with-xslt-lib=/home/joe/builds/lib 
                    --with-xslt-include=/home/joe/builds/include

我对Nokogiri的源代码进行了一些挖掘,试图找出它们如何允许这些选项从命令传递到实际的构建/安装。

我注意到使用了Rake :: ExtensionTask以及mini_portile,但是它们的使用似乎仅限于在其代码中对Windows系统进行交叉编译。

我可以在gem中添加一些代码,以允许用户在安装时指定要链接的库吗? nokogiri如何允许这个?

1 个答案:

答案 0 :(得分:1)

这是使用dir_config库的mkmf方法。

gem install命令使用--之后的任何参数作为构建命令的参数,因此它们会传递给extconf.rb

请注意,您仍然需要使用have_libraryfind_library才能真正链接到图书馆。