【发布时间】:2020-10-02 20:36:26
【问题描述】:
我的文件夹中有以下文件:
main.c |文件 1.c |文件1.h |文件2.c |文件2.h
main.c 依赖于 file1.h 和 file2.h。 但是file1.c也依赖于file2.h,这是我的问题。
这是我所拥有的:
CC = gcc
CFLAGS = -Wall -g
BIN = main
all: $(BIN)
main: main.o file1.o file2.o
$(CC) -o $@ $^
main.o: main.c file1.h
$(CC) $(CFLAGS) -c -o $@ $<
file1.o: file1.c file1.h
$(CC) $(CFLAGS) -c -o $@ $<
file2.o: file1.c file1.h
$(CC) $(CFLAGS) -c -o $@ $<
clean:
rm -f *.o $(BIN)
显然这是行不通的。
我可以做些什么来使我的 makefile 工作?并改进它?
编辑:
在 main.c 中:
#include "file1.h"
在file1.c中:
#include "file1.h"
在文件 1.h 中:
#include "file2.h"
在file2.c中:
#include "file2.h"
我在 file2.h 中没有包含。
我这样做对吗?
【问题讨论】:
-
这就是为什么我使用
automake并且不用担心这类事情。 -
如果“main.c 依赖于 file1.h 和 file2.h”,那么
main.o: main.c应该是main.o: main.c file1.h file2.h。 (注意是main.o,而不是main.c,它依赖于file1.h和file2.h。除非main.c的contents必须在file1.h或file2.h改变时改变.) 除此之外,你为什么说“这显然行不通”?
标签: c linux makefile dependencies