0
#
# 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. 
4

2 回答 2

3

每次我使用命令make Makefile它什么都不做

make Makefile试图创建Makefile. 由于您没有任何规则来创建它,因此无事可做。

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

您可以使用该-f选项指定要使用的不同生成文件:

make -f foo.mk

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

make clean

或两者:

make -f foo.mk clean
于 2013-09-22T00:52:10.007 回答
0

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

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

于 2013-09-22T00:35:14.607 回答