1

我正在尝试制作 Makefile 但我遇到了一些问题

首先我有

2 个源文件:~/main.c ~/lib/library.c 1 个头文件:~/include/library.h

main.c 和 library.c 共享同一个头文件 library.h

# Compiler options
CC = gcc
INC = -I../include
CFLAGS = -Wall -g -c $(INC)
LIB = -L../lib
LFLAGS = -Wall -g $(LIB)

# Dependencies
LIBS = -libmylib
OBJS = main.o
SRCS = $(OBJS:.o=.c)
EXEC = a.out

# Other rules
RM = rm -rf
TAGS = tags
BAK = Makefile.bak

all: $(EXEC)
    @echo ------------------------ Compile Complete ----------------------------

.PHONY: clean depend

$(EXEC): $(OBJS)
    $(CC) $(LFLAGS) -o $@ $^ $(LIBS)

.c.o:
    $(CC) $(INC) -M $^
    $(CC) $(CFLAGS) -o $@ $<

clean:
    $(RM) *.o *~ $(EXEC) $(TAGS) $(BAK)

depend: $(SRCS)
    makedepend $(INC) $^

它一直说我不能排除library.o的规则

另外我还有一个问题

我承认当 Makefile 在调用 'make' 后开始执行时,

然后转到 .co 或 %c: %o(在 GNU 增强版中)行并制作

.o 文件。但是为什么它不自动调用 clean 和依赖呢?


我从以前版本的 Makefile 中编辑了一些东西

这一次,(非常类似于前面的问题)即使我

阐明了库路径(-I../lib),

Makefile 找不到存档文件(我在 ../lib 目录中创建为 libmylib.a)

现在它让我发疯

4

1 回答 1

0

但是为什么它不自动调用 clean 和依赖呢?

因为make只构建你告诉它的目标。如果您不指定一个,则构建第一个目标,在许多情况下,例如您的目标,它是“全部”目标。

于 2019-04-21T13:15:32.460 回答