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

我有很多问题要做一个makefile,我终于得到了这个工作我只想确保这些都是好的(不仅是为了让程序运行,而且为了一个好的make文件)
一个问题是为什么matrix.o和smatrix.o在g c c-g-c行中有.o文件列在哪里。o和测试。o没有那一行。。
我不得不添加-std=c99,因为我得到了一些奇怪的循环错误,但仍然不明白为什么我需要把matrix.o放在行中。。

最佳答案

文件没问题它不容易维护。
这个网站有一个很好的教程,教你如何制作漂亮的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 $@

这将向您展示如何增强可维护性(在SOURCES中添加额外的文件,其余的将自动完成。

关于c - 制作文件,这样可以吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5432877/

10-11 22:50
查看更多