Makefile如何在删除所有其他目标文件和可执行文件时不删除一个特定的目标文件?

时间:2018-11-08 18:19:51

标签: shell makefile

现在,我有了以下命令: [,1] [,2] [,3] [,4] [1,] 3 3 3 3 [2,] 3 2 3 3 [3,] 3 3 3 3 [4,] 3 3 3 3 ,该命令通过在外壳程序中调用max_u <- matrix(max_u, nrow = 4)来删除所有目标文件和可执行文件。但是我有一个特定的目标文件,说rm -f *.x *.o,我不想删除。如何在不对其进行硬编码的情况下执行此操作?请注意,我只能在C90下实现它,因为这是一项分配。

1 个答案:

答案 0 :(得分:5)

首先,请勿在{{1​​}}规则(或任何其他规则)中发出通配符删除命令。当用户键入clean:时,他们可能会丢失甚至不在构建系统控制下的文件。您的构建系统应仅清除其构建内容。 (也就是说,至少具有“常规强度” make clean目标;在这里,我们应该承认提供附加目标以删除编辑器备份文件,clean,生成的配置材料等的广泛实践。)< / p>

目标文件应在tags之类的某些变量中列出,并应使用$(OBJS)删除。

如果不删除某个目标文件,则可以划分以下内容:

rm -f ... $(OBJS)

然后在DISPOSABLE_OBJS = ... PRECIOUS_OBJS = ... OBJS = $(DISPOSABLE_OBJS) $(PRECIOUS_OBJS) 规则中,只需删除clean

在GNU中,使您拥有更多的灵活性,例如$(DISPOSABLE_OBJS)可以删除除rm -f $(filter-out keep1.o keep2.o,$(OBJS))$(OBJS)之外的所有keep1.o