LoginSignup
4

More than 3 years have passed since last update.

posted at

updated at

Organization

mrbgemsでC++のAPIを呼ぶgemを作るには

背景

mrubyで画像処理をしてみようと軽く調べたら、Imagemagickが
OpenCLに対応しているらしく、それならこれを使えば、mrubyからOpenCLを
叩けてかっこいいと思った

さらに楽なAPIは、CよりC++な感じがした。これは昨今のOpenCVのAPIを頑なにPython APIで使えるもの調べれば調べるほどC++のみAPIが用意されていたり、より便利なAPIだったりといった状況を知らなければ、C++は例外が標準規格化される以前の時代に触っって、その後SIerのデスマでC++使えるはずの要員が軒並み、Cのコンパルすら自力で通せないなんて経験をしているからC++は極力敬遠したり、最近だとnode.jsサイドからのV8の追随作業で生じるnanもバージョンを上げないと吸収できない件などからあまり良い印象を受けていないかったので、迷わずCのAPIで作業を進めるところだった。

雑な対応メモ

MRuby::Gem::Specification.new('mruby-mrmagick') do |spec|
  spec.license = 'MIT'
  spec.authors = 'kaita hito'

  magick_cflg =  `Magick++-config --cxxflags --cppflags`.chomp!
  magick_cflg.gsub!(/\n/," ")
  #puts magick_cflg
  spec.cxx.flags << magick_cflg
  magick_libs = `Magick++-config --ldflags --libs`.chomp!
  magick_libs.gsub!(/\n/," ")
  spec.linker.flags_before_libraries << magick_libs
end

spec.cxx.flags

spec.cxx.flagsへC++ APIのヘッダファイルのパスを追加。

spec.linker.flags_before_libraries

こちらはCのAPIと同様にC++ APIのライブラリへのパスを追加。

Link

関連投稿

関連記事

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4