使不产生输出
Make not producing output
all: 1.c 2.c 3.c
1.c:
gcc 1.c -o 1
2.c:
gcc 2.c -o 2
3.c:
gcc 3.c -o 3
所以当我键入 "make" 时,为什么没有生成文件(它只是告诉我 "make" 是最新的。)我做错了什么?!
请注意,1、2、3 不是我的实际文件名。
对于1.c:
,您正在定义构建对象“1.c”的规则,您需要说您正在构建对象“1”
1: 1.c
gcc 1.c -o 1
2: 2.c
gcc 2.c -o 2
3: 3.c
gcc 3.c -o 3
all: 1 2 3
1: 1.c
gcc 1.c -o 1
2: 2.c
gcc 2.c -o 2
3: 3.c
gcc 3.c -o 3
make 如何知道要编译什么?他检查依赖项的最后修改时间!如果依赖文件在目标文件之后才修改,那么他就在做工作!
他检查 1 2 3
及其依赖项。 1
的依赖项是 1.c
。而现在,如果在1
之后修改1.c
,他才会做gcc 1.c -o 1
。由于在您的情况下 1
甚至不存在,Make 将为您创建此文件。
Target: all -> Dependencies: 1 2 3
Target: 1 -> Dependency: 1.c
Target: 2 -> Dependency: 2.c
Target: 3 -> Dependency: 3.c
现在他检查最后修改了什么,1
或 1.c
?我什至没有 1
,所以我将使用 gcc 1.c -o 1
等
创建目标文件 1
下次,如果您有 1
文件并修改了 1.c
,他会看到文件 1
是在 1.c
上次修改之前创建的,因此他会再做一次 gcc 1.c -o 1
.
你可以用这个..
# Makefile template
CC=gcc
CFLAGS= -I.
OBJ=1.o 2.o 3.o
DEPS= library1.h library2.h library3.h
all: X
@echo "Finish."
X: $(OBJ)
@echo "Building the application core.."
$(CC) -o x $(OBJ) $(CFLAGS)
%.o: %.c $(DEPS)
@echo "Building objects.."
$(CC) -c -o $@ $< $(CFLAGS)
clean:
@echo "Cleaning up.."
rm -f $(OBJ) x
来源:
http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
all: 1.c 2.c 3.c
1.c:
gcc 1.c -o 1
2.c:
gcc 2.c -o 2
3.c:
gcc 3.c -o 3
所以当我键入 "make" 时,为什么没有生成文件(它只是告诉我 "make" 是最新的。)我做错了什么?!
请注意,1、2、3 不是我的实际文件名。
对于1.c:
,您正在定义构建对象“1.c”的规则,您需要说您正在构建对象“1”
1: 1.c
gcc 1.c -o 1
2: 2.c
gcc 2.c -o 2
3: 3.c
gcc 3.c -o 3
all: 1 2 3
1: 1.c
gcc 1.c -o 1
2: 2.c
gcc 2.c -o 2
3: 3.c
gcc 3.c -o 3
make 如何知道要编译什么?他检查依赖项的最后修改时间!如果依赖文件在目标文件之后才修改,那么他就在做工作!
他检查 1 2 3
及其依赖项。 1
的依赖项是 1.c
。而现在,如果在1
之后修改1.c
,他才会做gcc 1.c -o 1
。由于在您的情况下 1
甚至不存在,Make 将为您创建此文件。
Target: all -> Dependencies: 1 2 3
Target: 1 -> Dependency: 1.c
Target: 2 -> Dependency: 2.c
Target: 3 -> Dependency: 3.c
现在他检查最后修改了什么,1
或 1.c
?我什至没有 1
,所以我将使用 gcc 1.c -o 1
等
1
下次,如果您有 1
文件并修改了 1.c
,他会看到文件 1
是在 1.c
上次修改之前创建的,因此他会再做一次 gcc 1.c -o 1
.
你可以用这个..
# Makefile template
CC=gcc
CFLAGS= -I.
OBJ=1.o 2.o 3.o
DEPS= library1.h library2.h library3.h
all: X
@echo "Finish."
X: $(OBJ)
@echo "Building the application core.."
$(CC) -o x $(OBJ) $(CFLAGS)
%.o: %.c $(DEPS)
@echo "Building objects.."
$(CC) -c -o $@ $< $(CFLAGS)
clean:
@echo "Cleaning up.."
rm -f $(OBJ) x
来源: http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/