首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cakebuild中创建任务序列

在Cakebuild中创建任务序列
EN

Stack Overflow用户
提问于 2017-10-16 16:29:29
回答 1查看 433关注 0票数 1

我正在使用Cake0.23.0,并且很高兴地看到任务依赖关系已经扩展了。不幸的是,即使是最新的版本也解决不了我的问题。还是我做错了什么?

我想要实现的

  • 假设我定义了多个平台(例如x86或x64)相同的任务
  • 我想定义一个构建序列,它首先为platform x86执行所有任务。一旦完成,就应该执行一个init任务,即将平台设置为x64,然后执行与x86相同的任务。
  • 示例序列:任务Init x86 -> Task -> Task -> Task C -> Task x64 -> Task A -> Task B -> Task C

当前行为结果序列是Task x86 -> Task -> Task -> Task C -> Task x64

似乎Cake只尊重任务依赖一次。我将其定义如下:

代码语言:javascript
复制
Task("Compile-All-Platforms")
  .IsDependentOn("Init-86")  
  .IsDependentOn("A")
  .IsDependentOn("B")
  .IsDependentOn("C")
  .IsDependentOn("Init-x64")
  .IsDependentOn("A")
  .IsDependentOn("B")
  .IsDependentOn("C");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 16:55:42

如果您想要在两个大步骤中构建,那么简单的方法就是将A、B和C的构建逻辑封装在帮助函数中,然后将它们封装到x86或x64任务中。这里的想法是利用Cake能够为您创建的依赖树,而不是在所有编译中记录所有依赖项。实际上,这是您想要使用构建协调器的主要原因。

当然,这是一种简单的方法,可以让它在3个任务和2个平台上工作。一个更可伸缩的解决方案是创建和加载项或一个接受"platform“参数并构建N个项目的助手脚本。

请注意,下面的代码仅仅显示了如何完成所要求的任务,但需要使用适当的WithCriteria指令进行改进。如果您认为是这样的话,您就不能只构建x64了。

代码语言:javascript
复制
Task("Compile-x86"){ 
    BuildA(); 
    BuildB(); 
    BuildC();
 }; 

 Task("Init-x64")
    .IsDependentOn("Compile-x86"){ 
    //Your init code goes here 
 }; 

 Task("Compile-x64")
    .IsDependentOn("Init-x64"){ 
    BuildA(); 
    BuildB();
    BuildC();
 }; 

 Task("Compile-All-Platforms")
 .IsDependentOn("Compile-x64");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46774963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档