Ruby rake 正确执行一次后,源码无变动,再次 rake, 仍然能触发个别任务的问题

yxmmrwx · 2024年02月20日 · 最后由 suman01 回复于 2024年02月26日 · 281 次阅读

为什么下面这个正确 rake 一次后,源码不动,再次执行 rake 总会触发:main 这个任务? file "main" => OBJFILES do |t| sh "gcc -o #{t.name} main.o a.o b.o" end

像下面这个就是正确的,如果 a.c 上次编译过后没改动,就不需触发 file "a.o" => ["a.c"] do |t| src = t.name.sub(/.o$/, '.c') sh "gcc #{src} -c -o #{t.name}" end

求教,为什么?如何解决?

问题自己摸出来了,应该这样定义任务 task :default => ["main.exe"]

file "main.exe" => OBJFILES do |t| sh "gcc -o #{t.name} main.o a.o b.o" end

原教程 task :default => [:main] file "main" => OBJFILES do |t| sh "gcc -o #{t.name} main.o a.o b.o" end

然后在 windows 下,原教程产生不了 main 文件(实际产生的是 main.exe)

原教程应该是对 linux 有效,windows 则需要改改

需要 登录 后方可回复, 如果你还没有账号请 注册新账号