我编写了一个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 :
之前。但它的工作正常。
有人可以在这里发光吗? (感谢)
答案 0 :(得分:1)
首先,您必须遵守makefile的缩进规则。规则要执行的命令应以制表符开头。然后,考虑到当您键入make
时,makefile中出现的第一个规则会自动执行。在第一种情况下,程序运行。要在run
规则不是第一个的第二个makefile中获取相同的内容,您必须执行make run
。