rake についてメモ
rake -t : trace して実行
rake -T : 見えているtaskを表示
rake -f FILE : 実行ファイル指定
=> 依存関係を示す
a => [b, c] aはb,cに依存する
Rakefile 例
task "default" => "dist"
task "dist" => ["init", "compile"] do
puts "-- make distribution --"
endtask "init" do
puts "-- initialize -- "
endtask "compile" do
puts "-- compile --"
end
ファイルタスク
message.oがタスク名、タスクは必ず実行されるが、ファイルタスクは
変更があった場合のみ実行される。
file "message.o" => "message.c" do
sh "#{CC} -c message.c"
endブロック引数t にはファイルタスクそのもが代入される
name
タスクの名称。ファイルタスクの場合、ファイルパス。
prerequisites
依存先であるタスク名の配列。<<
CC = "gcc"task :default => "hello"
file "hello" => ["hello.o", "message.o"] do |t|
sh "#{CC} -o #{t.name} #{t.prerequisites.join(' ')}"
endfile "hello.o" => "hello.c" do |t|
sh "#{CC} -c #{t.prerequisites[0]}"
endfile "message.o" => "message.c" do |t|
sh "#{CC} -c #{t.prerequisites[0]}"
end
sourceメソッドを使うことで、依存するファイルパスを参照することができる
make dir
directory "./hoge"
comment
desc "comment by author"
# rake -f Rakefile5 -T
rake compile # Compile All Source files
rake dist # Make distribution
rake init # Initialize
namespace
違う名前空間では、同じ名前のタスクでもきちんと別物として扱われる
namespace :client do
desc "build client components"
task :build do
puts "build client components..."
end
endnamespace :server do
desc "build server components"
task :build do
puts "build server components..."
end
end$ rake -T
(in /home/idesaku/prog)
rake client:build # build client components
rake server:build # build server components