这个问题来自于我之前的问题(以及对它的评论中的讨论),我使用基于make
的构建环境来构建基于R
的科研软件项目(我的博士论文):make always rebuilds Makefile targets。
根据@MadScentist的推荐,我创建了这个问题,以澄清我的构建环境的以下方面。由于我在项目的几乎所有子目录中都使用Makefile
个文件,因此我的研究工作流依赖性遇到了正确的规范问题。虽然工作流本身非常标准(数据收集 => 数据准备(转换,清理,合并,样本)=> 数据分析 => 结果呈现),IMHO的问题源于需要指定工件之间的构建依赖关系,位于不同目录(和不同类型,即单个中间文件取决于在一组数据文件等)。我还没有找到解决此问题的任何文档或明确解释。
非常感谢您的帮助!
更新:重新提出问题的标题以澄清问题。
答案 0 :(得分:1)
据我所知,这个问题没有解决办法。这就是为什么首先写'Recursive Make Considered Harmful'论文的原因。
如果您需要在对象级别上的目录间依赖关系,那么您不能以这种方式使用每个目录的Makefile:使用per-directory makefile:s只能手动同步make命令的运行顺序。 (您可能通过在每个目录中使用每个目标的戳文件和转发规则来伪造至少一些所需的构建,但它可能会很快变得难看和笨拙,并且可能无法在任何目录中使用多个目录给定级别。)