Rubygem的“I”标志是什么?

Rubygem的“I”标志是什么?,ruby,gem,Ruby,Gem,当我使用gcc构建项目时,我可以使用非常有用的-I标志来指定额外的include dir。有时候,gems需要编译代码,但我不能使用-I标志。具体来说,我无法在我的机器上构建RMagick,因为它在MagickWand步骤中失败: checking for wand/MagickWand.h... no 我确切地知道MagickWand.h在哪里。我如何告诉gem在哪里找到它 更新: 我的工作系统上有两个版本的ImageMagick,gem会抛出此错误: Warning: Found more

当我使用gcc构建项目时,我可以使用非常有用的-I标志来指定额外的include dir。有时候,gems需要编译代码,但我不能使用-I标志。具体来说,我无法在我的机器上构建RMagick,因为它在MagickWand步骤中失败:

checking for wand/MagickWand.h... no
我确切地知道MagickWand.h在哪里。我如何告诉gem在哪里找到它

更新: 我的工作系统上有两个版本的ImageMagick,gem会抛出此错误:

Warning: Found more than one ImageMagick installation. This could cause problems at runtime.
     /a/Magick-config reports version 6.5.8 Q8 is installed in [a]
     /b/Magick-config reports version 6.6.4 Q16 is installed in [b]
Using 6.5.8 Q8 from [a].
gem正在使用[a]版本,而我希望它使用[b]版本……但我找不到任何方法让它切换到[b]。据我所知,gem没有参考我的$PATH。

指示like可以传递构建选项

如果在gem安装期间未能编译扩展,那么gem规范将不会被写出,但gem将在存储库中保持解包状态。您可能需要指定库头和库的路径才能继续。您可以通过在RubyGems的选项和扩展的构建选项之间添加–来实现这一点:

对于您来说,这听起来像gem安装rmagick--I/path/to/MagickWand.h,但我不确定如何尝试验证它

$ gem install some_extension_gem
[build fails]
Gem files will remain installed in /path/to/gems/some_extension_gem-1.0 for inspection.
Results logged to /path/to/gems/some_extension_gem-1.0/gem_make.out
$ gem install some_extension_gem -- --with-extension-lib=/path/to/lib
[build succeeds]
$ gem list some_extension_gem

*** LOCAL GEMS ***

some_extension_gem (1.0)
$