Gcc makefiles-作为目标的clean

Gcc makefiles-作为目标的clean,gcc,makefile,cygwin,gnu-make,Gcc,Makefile,Cygwin,Gnu Make,有谁能告诉我如何执行写入makefile的clean目标吗。 这是我的密码 jamm : hello.o ghola.o gcc $^ -o $@ %.o : %.c gcc -c S< clean : rm *.c 杰姆:你好,奥戈拉 gcc$^-o$@ %.o:%.c gcc-CS< 清洁: rm*.c 我有一些问题。如何使用clean作为目标清理所有这些c文件。我们给出命令make-f file1(假设filename是file1)它将目标视为ja

有谁能告诉我如何执行写入makefile的clean目标吗。 这是我的密码

jamm : hello.o ghola.o
    gcc $^ -o $@

%.o : %.c
    gcc -c S<

clean :  
    rm *.c
杰姆:你好,奥戈拉 gcc$^-o$@ %.o:%.c gcc-CS< 清洁: rm*.c
我有一些问题。如何使用clean作为目标清理所有这些c文件。我们给出命令make-f file1(假设filename是file1)它将目标视为jamm并执行,但它不会执行干净的目标。如果在命令行中,我说make clean,它说没有这样的文件或目录,我无法理解这个概念。当我在make文件中写入时,谁能告诉我如何执行这些clean。请在我的一个make文件中,
clean
目标如下所示:

.PHONY: depend clean all new

clean:
    rm *.o *~ $(PROGS) ~/include/*.gch
请注意,带有可执行语句的行以一个选项卡开始

其他一些事情:

  • 您可能不想
    rm
    您的
    .c
    文件。这些是您的源文件,您可能会丢失编写它们的所有工作
  • 您想要删除的是对象(
    .o
    在我的示例中)和可执行文件(
    $(PROGS)
    在我的示例中,实际上是任何包含可执行文件名称的变量)文件,以及预编译的头文件(
    .gch
    ),因此您可以从头开始重新制作
  • 实际上不生成该名称文件的目标,如
    clean
    ,应列为
    .PHONY
    的先决条件。这让我们知道,即使有一个名为
    clean
    的文件,它也应该运行该命令
  • 要执行特定的目标(
    clean
    ),只需输入

    make clean
    
    但要确保:

    • 您与makefile位于同一目录中
    • 您的makefile需要命名为
      makefile
      makefile
      。如果您使用的是GNU make,也可以将其称为
      GNUmakefile

  • 在我的一个makefile中,
    clean
    目标如下所示:

    .PHONY: depend clean all new
    
    clean:
        rm *.o *~ $(PROGS) ~/include/*.gch
    
    请注意,带有可执行语句的行以一个选项卡开始

    其他一些事情:

  • 您可能不想
    rm
    您的
    .c
    文件。这些是您的源文件,您可能会丢失编写它们的所有工作
  • 您想要删除的是对象(
    .o
    在我的示例中)和可执行文件(
    $(PROGS)
    在我的示例中,实际上是任何包含可执行文件名称的变量)文件,以及预编译的头文件(
    .gch
    ),因此您可以从头开始重新制作
  • 实际上不生成该名称文件的目标,如
    clean
    ,应列为
    .PHONY
    的先决条件。这让我们知道,即使有一个名为
    clean
    的文件,它也应该运行该命令
  • 要执行特定的目标(
    clean
    ),只需输入

    make clean
    
    但要确保:

    • 您与makefile位于同一目录中
    • 您的makefile需要命名为
      makefile
      makefile
      。如果您使用的是GNU make,也可以将其称为
      GNUmakefile

  • 如果您有一个名为“clean”的文件,请检查目录。 可能是您的
    make
    调用认为它必须以某种方式生成一个“干净”的文件

    要解决此问题,请尝试在清理目标之前添加:

    杰姆:你好,奥戈拉 gcc$^-o$@ %.o:%.c gcc-CS< #添加以下内容: .假冒:干净 清洁: rm*.c
    顺便说一下:您的清理目标看起来很糟糕:您是否应该删除.o文件而不是.c???如果您有一个名为“清理”的文件,请检查目录。 可能是您的
    make
    调用认为它必须以某种方式生成一个“干净”的文件

    要解决此问题,请尝试在清理目标之前添加:

    杰姆:你好,奥戈拉 gcc$^-o$@ %.o:%.c gcc-CS< #添加以下内容: .假冒:干净 清洁: rm*.c
    顺便说一句:你的干净目标看起来很糟糕:你不应该删除.o文件而不是.c???

    请至少格式化你的示例make文件。看起来你的make文件中没有干净的目标。好吧,我这样做了,但无论我怎么尝试,我都不知道如何将其设置为一种格式。你尝试过“make-f file1 CLEAN”吗?并非如此,这是清理的方式吗?请至少格式化您的示例make文件。看起来您的make文件中没有干净的目标。好的,我这样做了,但无论我如何尝试,我都不知道如何将其设置为一种格式。您尝试过“make-f file1 clean”吗?并非如此,这是清理的方式吗?