1

在 makefile 中,clean我写过类似rm -rf *.o. 但它不是清理文件。如果我给了,rm -rf libdummy.o那么它会正确清洁它。因此,如果我使用*,它不会按预期工作。

干净的:
    rm -rf *.o
    rm -rf dummy.a

输出是

    [执行] rm -rf *.o
    [执行] rm -rf dummy.a

如果文件夹有a.o,b.odummy.a. 之后make clean,该文件夹中的a.ob.o呈现dummy.a被删除。

注意:我在 windows 中执行这个 make,使用 tornado 2.2 包为 vxworks 构建。我的 makefile 中的所有命令(如 make、cd、cp、rm)都是从 tornado 包中执行的。没有文件名叫做clean. 此外,我还声明cleanPHONY标签。

下面的讨论与我的问题不同。

Makefile clean 不删除 *.o 文件?

4

2 回答 2

4

在 Unix 环境中,通配符 like 的扩展*.o由 shell 在调用其他程序(如rm. 如果我没记错的话,Tornado 不包含 Unix 风格的 shell。我怀疑它是make用来cmd.exe调用命令的。cmd.exe不像 Unix shell 那样做通配符扩展。由于该选项,它会简单地传递*.oto ,它会默默地忽略它。rm-f

如果这是问题的原因,您可以使用 Windowsdel命令,它自己进行通配符扩展,或者您可以make通过编写rm -rf $(wildcard *.o).

于 2011-11-03T22:11:40.477 回答
1

确保在对象声明后的 makefile 中包含以下内容: all: [your execution names] clean

** 刚刚解决了我的 makefile 问题,因为必须明确声明 clean。

于 2013-02-02T14:36:15.913 回答