u16suzuの blog

u16suzu のブログです。

rakeについてメモ

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 --"
end

task "init" do
puts "-- initialize -- "
end

task "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(' ')}"
end

file "hello.o" => "hello.c" do |t|
sh "#{CC} -c #{t.prerequisites[0]}"
end

file "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
end

namespace :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

FileListまで。。