当我使用gcc构建项目时,我可以使用非常有用的-I
标志来指定其他包含dirs。有时,gems需要编译代码,但我不能使用-I
标志。具体来说,我无法在我的机器上构建RMagick,因为它在MagickWand步骤中失败了:
checking for wand/MagickWand.h... no
我确切知道MagickWand.h
的确切位置。我如何告诉宝石在哪里找到它?
更新 我的系统上有两个版本的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
。
答案 0 :(得分:0)
guides表示您可以传递构建选项
如果在gem安装期间扩展无法编译,则不会写出gem规范,但gem仍会在存储库中解压缩。您可能需要指定库的标头和库的路径才能继续。您可以通过在RubyGems的选项和扩展的构建选项之间添加一个来完成此操作:
$ 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)
$
对你而言,这听起来像gem install rmagick -- -I /path/to/MagickWand.h
,但我不确定如何尝试验证。