0

我写了一个makefile,其中的命令序列在我的makefile中如下

    .PHONY: all clean distclean run
    run : $(program_NAME)
    ./$(program_NAME) > output.txt  #runs my program and stotre output in output.txt

    all: $(program_NAME)

    $(program_NAME): $(program_OBJS)
    $(LINK.cc) $(program_OBJS) -o $(program_NAME)

如果我将其顺序更改为以下一个,它对我不起作用:-

   .PHONY: all clean distclean run
   $(program_NAME): $(program_OBJS)
   $(LINK.cc) $(program_OBJS) -o $(program_NAME)

   all: $(program_NAME)

    run : $(program_NAME)
    ./$(program_NAME) > output.txt  #runs my program and stotre output in output.txt

doesnot generate any output.txt对我来说。我觉得run :取决于 $(program_NAME) 所以$(program_NAME): $(program_OBJS) $(LINK.cc) $(program_OBJS) -o $(program_NAME)s应该run :在makefile之前出现。但反过来它工作正常。有人可以在这里发光吗?(谢谢)

4

1 回答 1

1

首先,您必须遵守 makefile 的缩进规则。由规则执行的命令应以制表符开头。然后,请注意,makefile 中出现的第一条规则会在您键入时自动执行make。在第一种情况下,程序运行。run要在规则不是第一个的第二个 makefile 中获得相同的规则,您必须执行make run.

于 2012-04-18T20:14:46.393 回答