429 :
デフォルトの名無しさん:
430 :
427:2006/08/20(日) 19:18:13
rakeのソース見てました。
def make_sources(task_name, extensions)
このあたりを見るに、ソースに対応した拡張子しか対応してなさそうです。
しかし、procを渡すと、その返却値のファイルで見てくれるので、
無理やり、
file 'hoge.o' => ['hoge.c', lambda{'Rakefile'}] do
p "hoge.o hoge.c Rakefile"
end
とやるとうまくいきました。
普通のファイルも扱えるように、
要望だそうかな・・・って、どこに出せばいいんだろ。
431 :
427:2006/08/20(日) 19:19:03
fileじゃなかった・・・
rule '.c' => ['.o', lambda{'Rakefile'}] do
p "#{t.name} #{t.source} Rakefile"
end
です。すみません。
Index: lib/rake.rb
===================================================================
--- lib/rake.rb (リビジョン 568)
+++ lib/rake.rb (作業コピー)
@@ -1552,12 +1552,11 @@
# Attempt to create a rule given the list of prerequisites.
def attempt_rule(task_name, extensions, block, level)
- sources = make_sources(task_name, extensions)
- prereqs = sources.collect { |source|
+ prereqs = make_sources(task_name, extensions) { |source|
if File.exist?(source) || Rake::Task.task_defined?(source)
source
- elsif parent = enhance_with_matching_rule(sources.first, level+1)
+ elsif parent = enhance_with_matching_rule(source, level+1)
parent.name
else
- return nil
+ nil
end
}
@@ -1573,7 +1572,8 @@
case ext
when String
- task_name.sub(/\.[^.]*$/, ext)
+ yield ext.sub(/\A(?=\.)/) {task_name.sub(/\.[^.]*$/, '')} or
+ yield ext or ext
when Proc
- ext.call(task_name)
+ yield ext.call(task_name)
else
fail "Don't know how to handle rule dependent: #{ext.inspect}"