以下Rakefile适用于需要a.c
和a.h
的简单程序。
# Rakefile
task :default => "a.out"
file "a.o" => "a.h"
file "a.out" => "a.o" do |t|
sh "gcc -o #{t.name} #{t.prerequisite_tasks.collect(&:name).join(' ')}"
end
rule ".o" => ".c" do |t|
sh "gcc -c -o #{t.name} #{t.source}"
end
在没有a.o
或a.out
时有效,但在a.c
更新时无效。
$ rake
gcc -c -o a.o a.c
gcc -o a.out a.o
$ touch a.c
$ rake
这是预期的行为吗?或者我错过了什么?
答案 0 :(得分:0)
而不是:
sh "gcc -o #{t.name} #{t.prerequisite_tasks.collect(&:name).join(' ')}"
试试这个:
`gcc -o #{t.name} #{t.prerequisite_tasks.collect(&:name).join(' ')}`
我倾向于使用反引号(与Esc键相同的键,用于系统命令),这可能会纠正行为。