利用Makefile生成一个组件库
SHELL=/bin/bash
TARGET_LIB_A := libXXX.a
DIST_INC := ./dist/include/component
DIST_LIB := ./dist/lib
DIST := ./dist/{include/component/,lib/}
SRC_INC := ./src/aaa.h \
./src/bbb.h \
./src/ccc.h
CROSS_COMPILE=arm-himix200-linux-
CC=$(CROSS_COMPILE)gcc
CXX=$(CROSS_COMPILE)g++
AR=$(CROSS_COMPILE)ar
CFLAGS := -Wall -Werror
CXXFLAGS :=
SRC_DIR:= ./src \
./src/utils
SFIX:= .c .cpp
SOURCES := $(foreach x,${SRC_DIR},\
$(wildcard \
$(addprefix ${x}/*,${SFIX})))
INCLUDES := -I./src -I./include -I./include/ebase
OBJS_FILE := $(addsuffix .o ,$(basename ${SOURCES}))
all : clean $(TARGET_LIB_A)
@mkdir -p $(DIST)
mv $(TARGET_LIB_A) $(DIST_LIB)
cp $(SRC_INC) $(DIST_INC)
$(TARGET_LIB_A) : $(OBJS_FILE)
@echo -e "AR $@"
@$(AR) -rcs $@ $^
@rm -f $(OBJS_FILE)
%.o : %.c
@$(CC) $(INCLUDES) -c $< -o $@ $(CFLAGS)
@echo -e "CC $<"
%.o : %.cpp
@$(CXX) $(INCLUDES) -c $< -o $@ $(CXXFLAGS)
@echo -e "CXX $<"
.PHONY: clean
clean:
@rm -f $(OBJS_FILE)
@rm -rf ./dist
利用Makefile生成一个可执行文件
SHELL=/bin/bash
DEMO:= demo
CROSS_COMPILE=
CC=$(CROSS_COMPILE)gcc
CXX=$(CROSS_COMPILE)g++
CXXFLAGS := -Wall -Werror -Wl,-rpath=../lib/ebase
SRC_DIR:= ./src
SFIX:= .c .cpp
SOURCES := $(foreach x,${SRC_DIR},\
$(wildcard \
$(addprefix ${x}/*,${SFIX})))
INCLUDES := -I../dist/include -I./src
LIB := -L../lib/ebase -L../dist/lib
LINK := -lcXXX \
-lprotoc -lm -lrt -ldl
OBJS_FILE := $(addsuffix .o ,$(basename ${SOURCES}))
all : clean mklib $(DEMO)
$(DEMO) : $(OBJS_FILE)
$(CXX) $(INCLUDES) -o $@ $^ $(LIB) $(LINK) $(CXXFLAGS)
@rm -f $(OBJS_FILE)
%.o : %.c
@$(CC) $(INCLUDES) -c $< -o $@
@echo -e "CC $<"
%.o : %.cpp
@$(CXX) $(INCLUDES) -c $< -o $@
@echo -e "CXX $<"
.PHONY: mklib
mklib:
make CROSS_COMPILE= -C ../
.PHONY: clean
clean:
@rm -f $(OBJS_FILE)
@rm -f ${DEMO}