Ruby ExtensionTask:如何使它依赖于另一个rake任务?

Ruby ExtensionTask:如何使它依赖于另一个rake任务?,ruby,rake,Ruby,Rake,我正在使用Rake::ExtensionTask.new'NAME在Ruby 2.0中编写一个本机C扩展。我需要让它依赖于我定义的另一个任务 task :myTask do |t| .... end 我的问题是,我如何进行这种设置,以便在运行rake compile时,扩展编译/创建依赖于我定义的任务(即myTask)的完成 我也尝试了以下方法,但现在在运行rake-t时没有看到“compile”选项: 您的第二个代码段看起来是正确的,只需添加描述即可在rake列表中看到它 desc "Her

我正在使用Rake::ExtensionTask.new'NAME在Ruby 2.0中编写一个本机C扩展。我需要让它依赖于我定义的另一个任务

task :myTask do |t|
....
end
我的问题是,我如何进行这种设置,以便在运行rake compile时,扩展编译/创建依赖于我定义的任务(即myTask)的完成

我也尝试了以下方法,但现在在运行rake-t时没有看到“compile”选项:


您的第二个代码段看起来是正确的,只需添加描述即可在rake列表中看到它

desc "Here's your description"
task :extension_compile => [:myTask]
  Rake::ExtensionTask.new("NAME")
end

您的第二个代码段看起来是正确的,只需添加描述即可在rake列表中看到它

desc "Here's your description"
task :extension_compile => [:myTask]
  Rake::ExtensionTask.new("NAME")
end

要将依赖项添加到现有任务中,应使用哈希表示法,如下所示:

task :compile => [:myTask]
运行rake-t时,您不会看到:compile任务,因为rake只显示具有以下描述的任务:

desc "This is a compilation task"
task :compile
现在运行rake-T将产生:

rake compile  # This is a compilation task

要将依赖项添加到现有任务中,应使用哈希表示法,如下所示:

task :compile => [:myTask]
运行rake-t时,您不会看到:compile任务,因为rake只显示具有以下描述的任务:

desc "This is a compilation task"
task :compile
现在运行rake-T将产生:

rake compile  # This is a compilation task

任务:编译的定义是什么?扩展是如何与:compile关联的?任务:compile的定义是什么?扩展名与:compile有什么关系?谢谢你的评论。我已经有了描述。我无法强制执行:compile和:myTask之间的依赖关系。谢谢您的评论。我已经有了描述。我无法强制执行:compile和:myTask之间的依赖关系。谢谢!这确实奏效了。然而,我遇到了另一个问题。运行rake compile现在运行“rake compile:myNativeExtension”,它没有我们强制的依赖项:compile。最后,我将以下内容添加到我的原始代码->Rake::Task[:compile].invoke中。现在,当我执行rake-T时,只显示“extension_compile”,而不显示compile。我可以接受,尽管我想找到一个完整的解决方案。再次感谢,谢谢!这确实奏效了。然而,我遇到了另一个问题。运行rake compile现在运行“rake compile:myNativeExtension”,它没有我们强制的依赖项:compile。最后,我将以下内容添加到我的原始代码->Rake::Task[:compile].invoke中。现在,当我执行rake-T时,只显示“extension_compile”,而不显示compile。我可以接受,尽管我想找到一个完整的解决方案。再次感谢。