我在项目中需要一些Makefile的帮助

时间:2013-08-28 08:23:30

标签: c makefile

我正在尝试创建一个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)

现在它让我发疯了

1 个答案:

答案 0 :(得分:0)

  

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

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