与要定义的规则序列相关的Makefile行为

时间:2012-04-18 20:10:00

标签: c++ makefile

我编写了一个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)

如果我将其序列更改为低于1,它对我不起作用: -

   .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应该在makefile中run :之前。但它的工作正常。        有人可以在这里发光吗? (感谢)

1 个答案:

答案 0 :(得分:1)

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