我正在尝试创建一个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'后开始行动,
然后转到.c.o或%c:%o行(在GNU增强版中)并制作
.o文件。但是为什么它也不会自动调用干净并依赖它?
我已经编辑了以前版本的Makefile
中的一些内容这次,(非常类似于上一个问题)即使我
澄清了库路径(-I ../ lib),
Makefile找不到存档文件(我在../lib dir中创建为libmylib.a)
现在它让我发疯了
答案 0 :(得分:0)
但是为什么它也不能调用clean并自动依赖呢?
因为make
仅建立您告诉它的目标。如果您不指定目标,则将建立第一个目标,在许多情况下,例如您的目标,将是“全部”目标。