Makefiles是否适用于没有软件工程主要目标的项目?

Makefiles是否适用于没有软件工程主要目标的项目?,makefile,project,gnu-make,Makefile,Project,Gnu Make,我正在做一个项目,在这个项目中,我解析一些文本,使用解析更改文本格式,然后将输出传输到神经网络模型 我使用一些脚本和预先训练的模型来完成所有这些。因此,为了使过程顺利进行,我编写了一个脚本,其中包含了实现结果所需的所有步骤 我现在正在制作一个makefile来实现这一点,试图分离这些步骤,并且只有在上一步还没有完成的情况下才重建。编写makefile是一个困难的过程,因此我认为它在本例中可能没有用处,并且仅用于组织源代码(例如C) 你对这件事怎么看 这是品味的问题生成非常有用,特别是当单个文件依

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

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

我现在正在制作一个makefile来实现这一点,试图分离这些步骤,并且只有在上一步还没有完成的情况下才重建。编写makefile是一个困难的过程,因此我认为它在本例中可能没有用处,并且仅用于组织源代码(例如C)


你对这件事怎么看

这是品味的问题<当某些文件可以从其他文件(使用其时间戳)生成时,代码>生成非常有用,特别是当单个文件依赖于多个其他文件时。你也可以使用其他工具,比如。但是
make
在软件工程任务之外是有用的(例如,使用诸如或之类的文本格式化程序生成文档),因此它可能对您有用


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

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

make
可以很好地进行编译,因为有中间结果、目标文件、
*.o
make
可以节省时间,因为它不会编译所有源文件,只编译那些已更改的源文件


问题是:在这个过程中有中间结果吗?如果是,则
make
可以节省时间。如果没有,那么脚本将比
make
更好。我通常使用
make
来跟踪我在分析数据时所做的事情。差不多

.PHONY: all
all: currentexperiment

currentexperiment: previousexperiment
    grep Failure $< >$@

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

.PHONY: clean
clean:
    rm previousexperiment currentexperiment
。假冒:全部
全部:当前实验
当前实验:先前的实验
grep失败$<>$@
先前的实验:数据文件
awk'NF>3'$<>$@
.假冒:干净
清洁:
rm先前的实验

一旦我有了一个好主意,我想去哪里,哪些实验是有用的,我可以将其形式化为一个脚本;但我发现,跟踪我在创建特定输出文件的过程中的位置、在创建过程中发现错误时如何重新创建该文件以及记录我所做的事情非常有用。另一种解决方案是在
bin
目录中乱扔一些小脚本,或者依靠shell历史记录来回忆上周二到底做了什么。我发现,一旦你习惯了这个模型,
Makefile
减少了麻烦,创建了一个相当自然的流程。

为什么你不能用一个简单的shell脚本来做同样的事情呢?就像我写的,一旦我有足够的分析来确定脚本需要做什么,也许我最终会这样做。这是用于探索阶段的(尽管我通常只保留Makefile)。