添加编译的宏开关:https://www.cnblogs.com/zht-blog/p/4036935.html
理解 Android Build 系统架构:https://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/
Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
https://blog.csdn.net/liurunjiang/article/details/77249012
4.多个目标编译
https://blog.csdn.net/yychuyu/article/details/79951051
5.头文件及其他写法
https://blog.csdn.net/xukai871105/article/details/36476793
5.示例:
#target you can change test to what you want
NAME_1 = client
NAME_2 = server
TARGET := $(NAME_1) $(NAME_2)
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
# SOURCE := $(wildcard *.c) $(wildcard *.cpp)
SOURCE_COMMON = src/logout.c \
hello.c
SOURCE_1 := tst_client.c \
hello.c \
$(SOURCE_COMMON)
SOURCE_2 := tst_server.c \
hello.c \
$(SOURCE_COMMON)
OBJS_1 := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE_1)))
OBJS_2 := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE_2)))
#compile and lib parameter
#编译参数
CC := gcc
LIBS := $(shell pkg-config --libs glib-2.0 gobject-2.0 gtk+-2.0)
LDFLAGS :=
DEFINES := -g -Wall -O3
INCLUDE :=
CFLAGS := $(shell pkg-config --cflags glib-2.0 gobject-2.0 gtk+-2.0)
CXXFLAGS:= $(CFLAGS) $(DEFINES) -DHAVE_CONFIG_H
#i think you should do anything here
#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuild
all : $(TARGET)
$(NAME_1) : $(OBJS_1)
$(CC) $(CXXFLAGS) -o $@ $(OBJS_1) $(LDFLAGS) $(INCLUDE) $(LIBS)
$(NAME_2) : $(OBJS_2)
$(CC) $(CXXFLAGS) -o $@ $(OBJS_2) $(LDFLAGS) $(INCLUDE) $(LIBS)
objs : $(OBJS_1) $(OBJS_2)
everything : $(TARGET)
rebuild: veryclean everything
SUBDIR = $(shell ls ./ -R | grep /)
SUBDIRS = $(subst :,/,$(SUBDIR))
RMSOURCE = $(foreach dir, $(SUBDIRS),$(wildcard $(dir)*.o))
clean :
rm -fr *.so
rm -fr $(RMSOURCE)
rm -fr $(TARGET)
veryclean : clean
# rm -fr $(TARGET)
%.o:%.c
$(CC) $(CFLAGS) $(INCLUDE) -o $@ -c $<
# $(TARGET) : $(OBJS)
# $(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(INCLUDE) $(LIBS)