<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Rake</id>
	<title>Rake - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Rake"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Rake&amp;action=history"/>
	<updated>2026-07-16T11:21:04Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Rake&amp;diff=3123467&amp;oldid=prev</id>
		<title>imported&gt;InternetArchiveBot：​补救6个来源，并将0个来源标记为失效。) #IABot (v2.0.8</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Rake&amp;diff=3123467&amp;oldid=prev"/>
		<updated>2021-02-08T17:52:32Z</updated>

		<summary type="html">&lt;p&gt;补救6个来源，并将0个来源标记为失效。) #IABot (v2.0.8&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                   = Rake&lt;br /&gt;
| screenshot             =&lt;br /&gt;
| caption                =&lt;br /&gt;
| developer              = {{tsl|en|Jim Weirich||Jim Weirich}}&lt;br /&gt;
| latest release version = 12.3.0&lt;br /&gt;
| latest release date    = {{Start date and age|2017|11|15}}&lt;br /&gt;
| operating system       = Cross-platform&lt;br /&gt;
| programming language   = [[Ruby]]&lt;br /&gt;
| genre                  = [[软件开发工具|Software development tools]]&lt;br /&gt;
| license                = [[MIT許可證|MIT License]]&lt;br /&gt;
| website                = {{URL|https://ruby.github.io/rake/}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rake&amp;#039;&amp;#039;&amp;#039;是一款软件任务管理及[[組建自動化]]工具。用户可指定任务、描述依赖关系及分组命名空间中的任务。 &lt;br /&gt;
&lt;br /&gt;
此软件与[[SCons]]和[[Make]]类似，但有着诸多差异。Rake使用[[Ruby]]编写，使用以Ruby语法编写的Rakefile（与Make中的Makefile等同）。此软件由{{tsl|en|Jim Weirich|吉姆·韦里奇|吉姆·韦里奇}}编写。&lt;br /&gt;
&lt;br /&gt;
Rake使用Ruby的[[匿名函数]]块来定义多个任务并允许用户使用Ruby语法。它拥有共同任务库，例如：控制文件任务的函数及移除已编译文件（即“clean”任务）的库。与Make相似的是，Rake同样可以根据模式来合成任务，例如：根据文件名自动构建文件编译任务。Rake现已成为Ruby 1.9后标准库的一部分。&lt;br /&gt;
&lt;br /&gt;
==示例==&lt;br /&gt;
下方是一个简单的用于构建[[C语言]] “Hellow, world!”程序的Rake脚本。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
  file &amp;#039;hello.o&amp;#039; =&amp;gt; &amp;#039;hello.c&amp;#039; do&lt;br /&gt;
    sh &amp;#039;cc -c -o hello.o hello.c&amp;#039;&lt;br /&gt;
  end&lt;br /&gt;
  file &amp;#039;hello&amp;#039; =&amp;gt; &amp;#039;hello.o&amp;#039; do&lt;br /&gt;
    sh &amp;#039;cc -o hello hello.o&amp;#039;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
要查看更多示例，请参见[http://www.ruby-doc.org/core-1.9.3/doc/rake/rakefile_rdoc.html Rakefile 文件格式]{{Wayback|url=http://www.ruby-doc.org/core-1.9.3/doc/rake/rakefile_rdoc.html |date=20181004052801 }}文档。&lt;br /&gt;
&lt;br /&gt;
===规则===&lt;br /&gt;
&lt;br /&gt;
当文件被列为先决条件但不含有为其定义的文件任务时，Rake将尝试通过查看Rakefile所支持的规则列表来合成任务。例如，假设我们尝试调用任务&amp;quot;我的代码.o&amp;quot;却不为其定义任务，且Rakefile规则如下所示：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
rule &amp;#039;.o&amp;#039; =&amp;gt; &amp;#039;.c&amp;#039; do |t|&lt;br /&gt;
  sh &amp;quot;cc #{t.source} -c -o #{t.name}&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
此规则将自动合成任意以“.o”为后缀名的任务。前提条件是必须存在拓展名为“.c”的源文件。若Rake可以找到名为“我的代码.c”的源文件，其将自动新建任务将“我的代码.c”构建为“我的代码.o”。若文件“我的代码.c”不存在，Rake将尝试为其递归合成规则。&lt;br /&gt;
&lt;br /&gt;
当任务从规则中合成后，任务的原属性被设置为匹配源文件。这点使得用户可撰写含引用源文件操作的规则。&lt;br /&gt;
&lt;br /&gt;
===高级规则===&lt;br /&gt;
&lt;br /&gt;
任意正则表达式均可作为规则模式。除此之外，进程也可用于计算源文件名称以允许复杂的模式及源。&lt;br /&gt;
&lt;br /&gt;
下方规则与上方示例等同：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
rule(/\.o$/ =&amp;gt;&lt;br /&gt;
  -&amp;gt;(t_name){ t_name.sub /\.o$/, &amp;#039;.c&amp;#039; }) do |t|&lt;br /&gt;
  sh &amp;quot;cc #{t.source} -c -o #{t.name}&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
请注意：根据Ruby语法习惯，当首个参数为正则表达式时需要在规则旁插入括号。&lt;br /&gt;
&lt;br /&gt;
下列规则可用于Java文件：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
rule &amp;#039;.class&amp;#039; =&amp;gt; -&amp;gt;(t_name){ t_name&lt;br /&gt;
    .sub(/\.class$/, &amp;#039;.java&amp;#039;)&lt;br /&gt;
    .sub(/^classes\//, &amp;#039;src/&amp;#039;) } do |t|&lt;br /&gt;
  java_compile(t.source, t.name)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
下方是个简单的Rake合成配方示例：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
namespace :cake do&lt;br /&gt;
  desc &amp;#039;做煎饼馃子&amp;#039;&lt;br /&gt;
  task :pancake =&amp;gt; [:egg,:mianhu,:conghua,:baking_powder] do&lt;br /&gt;
     puts &amp;quot;凉油&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
  task :mianhu do&lt;br /&gt;
    puts &amp;quot;放上凉面糊推成圆饼型&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
  task :egg =&amp;gt; :mianhu do&lt;br /&gt;
    puts &amp;quot;打上1{{frac|1|2}}个鸡蛋&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
  task :conghua do&lt;br /&gt;
    puts &amp;quot;放上1{{frac|1|4}}勺葱花&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
  task :egg do&lt;br /&gt;
   puts &amp;quot;打上1个鸡蛋&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
  task :qiguo do&lt;br /&gt;
   puts &amp;quot;铲起大饼打包&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==另请参阅==&lt;br /&gt;
{{Portal|Free software}}&lt;br /&gt;
* [[Make]]&lt;br /&gt;
* [[Apache Maven]]&lt;br /&gt;
* [[Apache Ant]]&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [http://docs.seattlerb.org/rake/ Rake文档]{{Wayback|url=http://docs.seattlerb.org/rake/ |date=20181008132916 }}&lt;br /&gt;
* {{github|ruby/rake}}&lt;br /&gt;
* 由[[马丁·福勒]]撰写的[http://martinfowler.com/articles/rake.html 使用Rake构建语言]{{Wayback|url=http://martinfowler.com/articles/rake.html |date=20181229075617 }} &lt;br /&gt;
* railsenvy.com上的[https://web.archive.org/web/20071024171055/http://www.railsenvy.com/2007/6/11/ruby-on-rails-rake-tutorial Ruby on Rails Rake教程] &lt;br /&gt;
* railscasts.com上的[http://railscasts.com/episodes/66 自定义Rake任务]{{Wayback|url=http://railscasts.com/episodes/66 |date=20090202041637 }}&lt;br /&gt;
* lukaszwrobel.pl上的[http://lukaszwrobel.pl/blog/rake-tutorial Rake教程]{{Wayback|url=http://lukaszwrobel.pl/blog/rake-tutorial |date=20171022211724 }}&lt;br /&gt;
&lt;br /&gt;
{{Ruby编程语言}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Rake (Software)}}&lt;br /&gt;
[[Category:程序设计工具]]&lt;br /&gt;
[[Category:自动化构建]]&lt;br /&gt;
[[Category:使用MIT许可证的软件]]&lt;br /&gt;
[[Category:Ruby]]&lt;/div&gt;</summary>
		<author><name>imported&gt;InternetArchiveBot</name></author>
	</entry>
</feed>