non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

mruby-mrmagickをWindowsでもv7系のImageMagickに対応させた

おはようございます。次男がちょっと咳をするようになってますが、鼻水も多めで、ちょっと花粉症疑惑もかかってます。@kjunichiです。

背景

ちょっと前にCI環境を整備した。 この時に長らく結果的にv6系のImageMagickにしか対応していたWindows向けの mruby-mrmagickをv7系に対応した。

学んだこと

DLLの名称がv7とv6で異なっていた

v6だと

  • CORE_RL_magick_
  • CORE_RL_Magick++_
  • CORE_RL_wand_

v7だと

  • CORE_RL_MagickCore_
  • CORE_RL_Magick++_
  • CORE_RL_MagickWand_

と、共有ライブラリの名称が微妙に異なっていた。

対策

Rakeファイルで以下のようにインストールされているImageMagickのバージョンで 分岐を設けて、この差異に対応した。

文字列の比較は以下のメソッドを知って、これを使った。 mrbgem作れるけど、Rubyは勉強中なのでw。。

obj#include?(文字列)

当初、v6の指定を6としていて、

ImageMagick-7.0.3-Q16

もv6と判定されてしまった。

 imHome.include?("-6")

と前方にハイフンをつけることでこれに対応した。

関連記事