R Make:为多目录研究工作流设置生成环境

R Make:为多目录研究工作流设置生成环境,r,makefile,dependencies,workflow,R,Makefile,Dependencies,Workflow,这个问题源于我之前的问题(以及评论中的讨论),关于我在基于R的科研软件项目(我的博士论文)中使用基于的构建环境的问题: 根据@MadScentist的建议,我创建了这个问题来澄清我构建环境的以下方面。由于我在项目的几乎所有子目录中都使用了Makefile文件,因此我遇到了研究工作流依赖关系的正确规范的问题。虽然工作流本身是相当标准的(数据收集=>数据准备(转换、清理、合并、样本)=>数据分析=>结果表示),但问题的根源在于需要指定位于不同目录中的工件之间的构建依赖关系(并且是不同类型的,即单个中

这个问题源于我之前的问题(以及评论中的讨论),关于我在基于
R
的科研软件项目(我的博士论文)中使用基于
构建环境的问题:

根据@MadScentist的建议,我创建了这个问题来澄清我构建环境的以下方面。由于我在项目的几乎所有子目录中都使用了
Makefile
文件,因此我遇到了研究工作流依赖关系的正确规范的问题。虽然工作流本身是相当标准的(数据收集=>数据准备(转换、清理、合并、样本)=>数据分析=>结果表示),但问题的根源在于需要指定位于不同目录中的工件之间的构建依赖关系(并且是不同类型的,即单个中间文件依赖于一组数据文件等)。我没有找到任何关于此问题解决方案的文档或明确解释

非常感谢你的帮助


更新:重新措辞问题的标题,以澄清问题。

据我所知,这个问题没有解决方案。这就是论文最初撰写的原因


如果需要对象级别上的目录间依赖关系,则不能以这种方式使用每个目录Makefile:s。使用每个目录Makefile:s,您只能手动同步make命令的运行顺序。(通过在每个目录中使用每个目标的戳记文件和每个makefile中的转发规则,您可能至少可以伪造一些所需的构建,但这可能会很快变得丑陋和笨拙,并且可能无法在任何给定级别上处理多个目录。)

这里有问题吗?@Spacedman:当然!有问题(换句话说)是如何为基于
make
的构建环境正确指定目录间工件链依赖项。请查看链接问题以获取示例。我不必查看链接问题。因此,q应该非常独立、清晰、简洁,具有代表性的示例或结构。如果您的q是“如何正确指定目录间等”,然后编辑它来提问。目前标题太笼统,正文太杂乱无章。@Spacedman:我的问题是独立的。提供与我其他问题的链接仅仅是因为它是相关的。至于提问的风格,我认为这是个人问题。”简洁"是一个相对的术语。每个人对它都有自己的定义,更不用说简洁的程度取决于问题和上下文。如果你不喜欢我问题的风格,请不要随意投赞成票,甚至否决票。恕我直言,我不认为我必须因为一个c而改变我问题的标题和/或主体omment.感谢您的理解。请注意,make for scientific Workflow存在一些难以解决的问题:。还有其他一些限制较少的工具,如bpipe、nextflow和snakemake。感谢您的回答和论文链接。我将立即阅读。但是,由于已经阅读了摘要,似乎在单个项目范围内,
Makefile
file可能是我正在寻找的解决方案。另一方面,根据作者对make在资源方面的代价的批评,这个项目对我来说似乎并没有那么大,我担心会造成构建基础设施的开销(时间、资源)将是不合理的。对make的递归调用通常会给构建过程增加明显的时间,但依赖关系的破坏与您的问题更相关。任何本身足够长的过程都会使递归make增加的开销相形见绌。我倾向于单项目范围的
Makefile
解决方案。如何解决然而,我也想等待并听听@Spacedman的意见。@AleksandrBlekh在工作中实现了一个项目范围的
Makefile
解决方案在读了那篇文章之后,我可以告诉你,用一种简单的方式来做需要一些努力,但它教会了我更多关于make如何工作以及如何将各个部分链接在一起的知识。