Что является эквивалентом Rubygem флага '-I'? - PullRequest
1 голос
/ 31 января 2012

Когда я собираю проект с помощью gcc, я могу использовать очень полезный флаг -I, чтобы указать дополнительные каталоги включения. Иногда для гемов требуется код для компиляции, но я не могу использовать флаг -I. В частности, я не могу собрать RMagick на своем компьютере, потому что он не работает на шаге MagickWand:

checking for wand/MagickWand.h... no

Я точно знаю, где MagickWand.h. Как мне сказать гему, где его найти?

UPDATE: У меня есть две версии ImageMagick в моей системе (для работы), и гем выдает эту ошибку:

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]. Насколько я могу судить, гем не справляется с моим $PATH.

1 Ответ

0 голосов
/ 31 января 2012

Направляющие указывают на то, что вы можете передавать параметры сборки

Если во время установки гема не удается скомпилировать расширение, спецификация гема не записывается, но гем остается распакованным в репозитории. Вам может потребоваться указать путь к заголовкам и библиотекам библиотеки, чтобы продолжить. Вы можете сделать это, добавив - между параметрами 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, но я не совсем уверен, как проверить это.

...