现在,我有了以下命令: [,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下实现它,因为这是一项分配。
答案 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
。