请输入您要查询的百科知识:

 

词条 Rake (software)
释义

  1. Example

     Rules  Advanced rules 

  2. See also

  3. External links

{{multiple issues|{{cleanup|reason=Standalone links are bad. A new line every sentence is also bad.|date=March 2013}}{{Unreferenced|date=September 2010}}{{Tone|date=January 2016}}
}}{{Infobox software
| name = Rake
| screenshot =
| caption =
| developer = Jim Weirich
| latest release version = 12.3.0
| latest release date = {{Start date and age|2017|11|15}}
| operating system = Cross-platform
| programming language = Ruby
| genre = Software development tools
| license = MIT License
| website = {{URL|https://ruby.github.io/rake/}}
}}

Rake is a software task management and build automation tool. It allows the user to specify tasks and describe dependencies as well as to group tasks in a namespace.

It is similar to SCons and Make, but it has a number of differences. The tool is written in the Ruby programming language and the Rakefiles (equivalent of Makefiles in Make) use Ruby syntax. It was created by Jim Weirich.

Rake uses Ruby's anonymous function blocks to define various tasks, allowing the use of Ruby syntax. It has a library of common tasks: for example, functions to do common file-manipulation tasks and a library to remove compiled files (the "clean" task). Like Make, Rake can also synthesize tasks based on patterns: for example, automatically building a file compilation task based on filename patterns. Rake is now part of the standard library from Ruby version 1.9 onward.

Example

Below is an example of a simple Rake script to build a C Hello World program.

  file 'hello.o' => 'hello.c' do    sh 'cc -c -o hello.o hello.c'  end  file 'hello' => 'hello.o' do    sh 'cc -o hello hello.o'  end

For further examples, see the Rakefile format documentation.

Rules

When a file is named as a prerequisite but it does not have a file task defined for it, Rake will attempt to synthesize a task by looking at a list of rules supplied in the Rakefile. For example, suppose we were trying to invoke task "mycode.o" with no tasks defined for it. If the Rakefile has a rule that looks like this:

rule '.o' => '.c' do |t|

end

This rule will synthesize any task that ends in ".o". It has as a prerequisite that a source file with an extension of ".c" must exist. If Rake is able to find a file named "mycode.c", it will automatically create a task that builds "mycode.o" from "mycode.c". If the file "mycode.c" does not exist, Rake will attempt to recursively synthesize a rule for it.

When a task is synthesized from a rule, the source attribute of the task is set to the matching source file. This allows users to write rules with actions that reference the source file.

Advanced rules

Any regular expression may be used as the rule pattern. Additionally, a proc may be used to calculate the name of the source file. This allows for complex patterns and sources.

The following rule is equivalent to the example above:

rule(/\\.o$/ =>

  ->(t_name){ t_name.sub /\\.o$/, '.c' }) do |t|  sh "cc #{t.source} -c -o #{t.name}"

end

NOTE: Because of a quirk in Ruby syntax, parentheses are required around a rule when the first argument is a regular expression.

The following rule might be used for Java files:

rule '.class' => ->(t_name){ t_name

    .sub(/\\.class$/, '.java')    .sub(/^classes\\//, 'src/') } do |t|  java_compile(t.source, t.name)

end

Below is an example of a simple Rake recipe:

namespace :cake do

  desc 'make pancakes'  task :pancake => [:flour,:milk,:egg,:baking_powder] do     puts "sizzle"  end  task :butter do    puts "cut 3 tablespoons of butter into tiny squares"  end  task :flour => :butter do    puts "use hands to knead butter squares into 1{{frac|1|2}} cup flour"  end  task :milk do    puts "add 1{{frac|1|4}} cup milk"  end  task :egg do   puts "add 1 egg"  end  task :baking_powder do   puts "add 3{{frac|1|2}} teaspoons baking powder"  end

end

See also

{{Portal|Free and open-source software}}
  • Make
  • Apache Maven
  • Apache Ant

External links

  • Rake documentation
  • {{github|ruby/rake}}
  • Using the Rake build language by Martin Fowler
  • [https://web.archive.org/web/20071024171055/http://www.railsenvy.com/2007/6/11/ruby-on-rails-rake-tutorial Ruby on Rails Rake tutorial] at railsenvy.com
  • Custom Rake Tasks at railscasts.com
  • Rake Tutorial at lukaszwrobel.pl
{{Ruby programming language}}{{DEFAULTSORT:Rake (Software)}}

4 : Computer programming tools|Build automation|Software using the MIT license|Ruby (programming language)

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/22 17:20:58