...
代码块 |
---|
CC = gcc CFLAGS = "-Iinclude -O2 -fomit-frame-pointer -fPIC -ffunction-sections -fdata-sections" CXX = g++ CXXFLAGS = "-Iinclude -O2 -fomit-frame-pointer -fPIC -ffunction-sections -fdata-sections" export CC CFLAGS CXX CXXFLAGS all: make -f linux.mk clean: make -f linux.mk clean |
关于VPATH与头文件自动生成:
代码块 |
---|
# VPATH 指定所有的源码路径
VPATH := $(SRCDIR)
# 提取VPATH路径中的C和C++源文件,注意这里提取的是带完整路径的,也就是不同路径下面有相同名称的源文件也不影响
SOURCES = $(foreach dir,$(VPATH),$(wildcard $(dir)/*))
C_SRCS = $(filter %.c,$(SOURCES))
CPP_SRCS = $(filter %.cpp,$(SOURCES))
# 生成对应的.o和.d文件名称
C_OBJS = $(C_SRCS:%.c=%.o)
CPP_OBJS = $(CPP_SRCS:%.cpp=%.o)
LIB_OBJS = $(C_OBJS) $(CPP_OBJS)
LIB_DEPS = $(LIB_OBJS:.o=.d)
# 包含头文件依赖
-include $(LIB_DEPS)
# -MMD用于生成.d依赖文件
.c.o:
$(CC) $(CFLAGS) -c -MMD -o $@ $<
.cpp.o:
$(GPP) $(CPPFLAGS) -c -MMD -o $@ $< |