CC = gcc
INC_DIR := include
SRC_DIR := src
VPATH := src:include
CFLAGS = -Wall -Iinclude
#get .o and .c files
SRCS := $(wildcard $(SRC_DIR)/*.c)
OBJS :=
(
p
a
t
s
u
b
s
t
(patsubst %.c,%.o,
(patsubst(SRCS))
#where common header files
.PHONY : all
all : $(OBJS)
$(CC) -o $@ $^
%.o:%c
$(CC) -o $@ -c $< $(CFLAGS)
%.d: %.c
@set -e; rm -f $@;
$(CC) -MM $(CFLAGS) $< >
@
.
@.
@.$KaTeX parse error: Expected 'EOF', got '\ ' at position 3: ; \̲ ̲ sed 's,\($*\)\…KaTeX parse error: Can't use function '$' in math mode at position 4: > $̲@; \ rm -f $@.$$
-include $(OBJS:.o=.d)
clean:
rm -r $(OBJS) *.o *.d .d.
进入公司之后的小task:
师傅给了一个没有makefile的源代码文件,要求手动写出一个makefile来实现依赖关系的自动编译
难点在与
1、头文件数目繁杂,如何快速的讲.c文件和.h文件一一对应起来
2、其中某一个.h文件引用了另外的一个.h文件内容,而且路径写的并不是相对路径,而是类似于lib库的写法 也就是 include “aaa.h" ,也就是需要在编译过程中指定对应的公共头文件的目录 第二个问题的解决需要在 CFLAGS中直接给出include的文件夹的名称