Makefile是否适合没有软件工程主要目标的项目?

时间:2018-08-06 05:19:54

标签: makefile project gnu-make

我正在一个项目中解析一些文本,使用该解析来更改文本格式,然后将输出传递到神经网络模型。

我使用一些脚本和预先训练的模型来完成所有这些工作。因此,为了使过程顺利进行,我编写了一个脚本,其中包含达到结果所需的所有步骤。

我正在制作一个makefile来立即执行此操作,尝试将步骤分开,并且仅在上一步尚未完成时才重新构建。编写makefile是一个困难的过程,因此我认为在这种情况下可能没有用,仅用于组织源代码(例如,C)。

您对此事有何看法?

3 个答案:

答案 0 :(得分:0)

这是一个品味问题。当某些文件可以从其他文件构建(使用它们的时间戳)时,make很有用,尤其是当一个文件依赖于其他文件时。您还可以使用其他build automation工具,例如ninja。但是make在软件工程任务之外非常有用(例如,使用诸如LaTeXLout之类的文本格式器来生成文档),因此对您很有用。

请务必阅读GNU make的文档。它可能具有您不知道的有用功能(例如extensibilityfunctions)。

答案 1 :(得分:0)

make适用于具有多个依赖项的项目,并且可以从依赖项中创建中间结果。如果没有中间结果,那么make不会比脚本更好。

make与编译效果很好,因为存在中间结果,即目标文件*.omake可以节省时间,因为它不会编译所有源文件,仅编译已更改的源文件。

问题是:在此过程中是否有中间结果?如果是,则make可以节省时间。如果否,那么脚本将比make更好。

答案 2 :(得分:0)

我通常使用make来跟踪我在分析数据时所做的事情。像

.PHONY: all
all: currentexperiment

currentexperiment: previousexperiment
    grep Failure $< >$@

previousexperiment: datafile
    awk 'NF>3' $< >$@

.PHONY: clean
clean:
    rm previousexperiment currentexperiment

一旦我对要去的地方以及哪些实验有用的一个好主意,可以将其形式化为脚本;但是,我发现跟踪一个特定输出文件的创建过程中的位置,发现一个创建文件的错误以及如何记录所做的工作时如何重新创建它很有用。另一种解决方案是用小的脚本乱填充bin目录,或者依靠您的shell历史记录来回忆您上周二所做的工作。我发现Makefile减少了麻烦,并在您习惯了此模型后创建了一个相当自然的流程。