all: run
run: test.o list.o matrix.o smatrix.o
gcc test.o list.o matrix.o smatrix.o -o matrix-mul
list.o: list.c list.h
gcc -g -c list.c
matrix.o: matrix.c matrix.h
gcc -g -std=c99 -c -o matrix.o matrix.c
smatrix.o: smatrix.c smatrix.h
gcc -g -c -o smatrix.o smatrix.c
test.o: test.c test.h
gcc -g -c test.c
Run Code Online (Sandbox Code Playgroud)
我制作一个makefile时遇到了很多问题,我终于搞定了.我只是想确保这些都可以(不仅仅是为了让程序运行,而是为了一个好的make文件)
一个问题是为什么matrix.o和smatrix.o在.gcc -g -c ...行中有.o文件,其中list.o和test.o没有那行...
我不得不添加-std = c99因为我对循环错误有些奇怪,但仍然不明白为什么我需要将matrix.o放在行中..
该文件是OK-ish.它不易维护.
这个网站有一个关于如何制作漂亮的makefile的非常好的教程:http: //mrbook.org/blog/tutorials/make/
特别是看最后一个例子:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
Run Code Online (Sandbox Code Playgroud)
这应该向您展示如何增强可维护性(添加额外的文件SOURCES,其余文件自动完成).