为什么我的Makefile什么都不做?

时间:2013-09-22 00:24:59

标签: c unix makefile

#
# MakeFile assignment 2
# Variables

CC=gcc 
LINK=gcc
CFLAGS=-c -Wall -I.
OBJECT_FILES = cmpsc311-f13-assign2.o a2support.o

#Suffix rules
.SUFFIXES: .c .o

.c.o:
    $(CC) -c $(CFLAGS) -o $@ $<

#Productions
cmpsc311-f13-assign2 : $(OBJECT_FILES)
    $(LINK) $(OBJECT_FILES) -o $@

#Dependencies
 cmpsc311-f13-assign2.o : cmpsc311-f13-assign2.c a2support.h
 a2support.o : a2support.c a2support.h

clean:
    rm cmpsc311-f13-assign2.o
    rm a2support.o

每次我使用命令make Makefile它什么也不做,我的makefile有问题还是另一个问题?

运行以下命令也不会产生任何影响:

gcc -o cmpsc311-f13-assign2 cmpsc311-f13-assign2.c a2support.c a2support.h -I. 

2 个答案:

答案 0 :(得分:3)

  

每次我使用命令make Makefile时都不会执行任何操作

make Makefile尝试创建Makefile。由于您没有任何规则来创建它,因此无需做任何事情。

通常在没有参数的情况下调用make;它默认使用Makefile,并尝试定义第一个目标(在您的情况下为cmpsc311-f13-assign2)。

您可以使用-f选项指定要使用的其他makefile:

make -f foo.mk

或者您可以使用参数来指定要构建的内容:

make clean

或两者:

make -f foo.mk clean

答案 1 :(得分:0)

除了上面提到的答案,你还需要在第14行添加一个TAB字符。

$(CC) -c $(CFLAGS) -o $@ $<