mruby組み込み活用テクニック(1) ―― mrubyのビルド・ツールRakeを知る

邑中 雅樹

tag: 組み込み

技術解説 2013年4月19日

●Rakefileの基礎

 mrubyのRakefileに当たる前に,まずは基礎をざっと流しておきたいと思います.仮に図1のようなプロジェクトがあったとします.

 

図1 サンプル・プロジェクト

 

 

 これをMakefileで書くと,リスト2のようになります.これと同等の動作をするRakefileは,リスト3のようになります.

 

リスト2 Makefileの例

all: hello

main.o: main.c hello.c

hello.o: hello.c

hello: main.o hello.o

clean:
  -rm -f hello *.o

 

リスト3 Rakefileの例(その1)

require 'rake/clean'
CLEAN.include %w(hello *.o)

task :default => ['hello']

file 'main.o' => ['main.c', 'hello.h'] do
  sh 'gcc -c -o main.o main.c'
end

file 'hello.o' => ['hello.c'] do
  sh 'gcc -c -o hello.o hello.c'
end

file 'hello' => ['main.o', 'hello.o'] do
  sh 'gcc -o hello main.o hello.o'
end

 

 require文があったり,do~endでくくっているところが見られたりと,Ruby言語を感じさせるところはあります.しかし,Ruby言語の知識が無くてもおおむね理解できそう,という気分になるのではないでしょうか.

 リスト3は,さらに短くすることもできます(リスト4).

 

リスト4 Rakefileの例(その2)

require 'rake/clean'
CLEAN.include %w(hello *.o)

rule '.o' => ['.c'] do |task|
  sh "gcc -c -o #{task.name} #{task.source}"
end

task :default => ['hello']

file 'main.o' => ['main.c', 'hello.h']

file 'hello.o' => ['hello.c']

file 'hello' => ['main.o', 'hello.o']

 

 #{task.name}のあたりで,Ruby言語っぽさがにじみ出てはいます.しかし,全体としては,さらにリスト2に近い表記になったかと思います.このように,Rakeは,実はRuby言語でありながらも,Ruby言語っぽさを可能な限り隠しています.


*   *   *

 

 今回は,mrubyのビルド環境を理解するために必要な背景のみを概観しました.次回からは,mrubyのソース・ツリーを参照しながら,ビルド環境を説明していきます.

 また,本家のmrubyは,機器組み込みだけでなくアプリケーション組み込みに用いることも想定しているため,機器組み込みでのみ求められる機能については採用が遅れる傾向にあります.ビルド環境についても,同様の傾向があります.そこで,mrubyからの分家であるmonami-ya.mrbを例題に,機器組み込みに必要な機能追加の方法についても説明する予定です.

 

むらなか・まさき

 
組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日